Servlet生命周期
Servlet生命周期.pngservlet生命周期一共分为4个状态 。分别是实例化:在第一次发起请求时调用构造方法,创建实例;初始化:第一次发起请求进行一些初始化操作,调用init方法;服务:调用Service方法 ,根据客户端的不同类型的请求,执行不同的方法,例如get、post、deleat等请求,执行相应的方法;销毁:服务器关闭,Servlet销毁,在销毁时调用destroy方法。
注意:实例化与初始化只在第一次发起请求时执行,第二次及以后不再执行,进入服务状态。
监听器
web监听器是一种Servlet中的特殊的组件,它能帮助开发者监听web中特定的对象。
如何实现监听器
- 创建不同的监听器要先实现对应的接口。
- 加类注解:@WebListener
常用监听器:
-
ServletContextListener
作用:监听服务器(应用)的启动与关闭
代码示例:
监听对象的状态
@WebListener // 配置当前监听器
public class ApplicationListener implements ServletContextListener {
// 服务器的启动(初始化)
@Override
public void contextInitialized(ServletContextEvent sce) {
}
// 服务器的关闭(销毁)
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
-
HttpSessionListener监听器
作用:监听会话的开始与结束
注意:一个session包括多个请求,session在第一次请求时创建。
代码示例:
@WebListener
public class SessionListener implements HttpSessionListener{
/**
* 监听Session会话的创建
*/
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.print("一个新的会话被创建:");
HttpSession currentSession = se.getSession();
System.out.println(currentSession.getId());
}
/**
* 监听Session会话的销毁
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.err.println("会话被销毁:" + se.getSession().getId());
}
}
-
ServletRequestListener
作用:监听request的创建和销毁
@WebListener
public class RequestListener implements ServletRequestListener{
/**
* 监听请求的创建
*/
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("捕获一个来自" + sre.getServletRequest().getRemoteAddr()+"的请求!");
}
/**
* 监听请求的销毁
*/
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("来自" + sre.getServletRequest().getRemoteAddr()+"的请求已被销毁!");
}
监听Attribute中键值对的状态(新增,删除,替换)
-
ServletContextAttributeListener
-
HttpSessionAttributeListener
-
ServletRequestAttributeListener
网友评论