阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

监听器的生命周期

112次阅读
没有评论

共计 2589 个字符,预计需要花费 7 分钟才能阅读完成。

1、创建与销毁监听器:

ServletContextListener:Tomcat 启动和关闭时调用下面两个方法

public void contextInitialized(ServletContextEvent evt):ServletContext 对象被创建后调用;

public void contextDestroyed(ServletContextEvent evt):ServletContext 对象被销毁前调用;

HttpSessionListener:开始会话和结束会话时调用下面两个方法

public void sessionCreated(HttpSessionEvent evt):HttpSession 对象被创建后调用;

public void sessionDestroyed(HttpSessionEvent evt):HttpSession 对象被销毁前调用;

ServletRequestListener:开始请求和结束请求时调用下面两个方法

public void requestInitiallized(ServletRequestEvent evt):ServletRequest 对象被创建后调用;

public void requestDestroyed(ServletRequestEvent evt):ServletRequest 对象被销毁前调用。

2、事件对象

ServletContextEvent:ServletContext getServletContext();

HttpSeessionEvent:HttpSession getSession();

ServletRequestEvent

​ ServletRequest getServletRequest()

​ ServletContext getServletContext()

3、案例

  • 编写 MyServletContextListener 类,实现 ServletContextListener 接口;

  • 在 web.xml 文件中部署监听器;

  • 为了看到 session 销毁的效果,在 web.xml 文件中设置 session 失效时间为 1 分钟;

/* * ServletContextListener 实现类 * contextDestroyed() -- 在 ServletContext 对象被销毁前调用 * contextInitialized() -- -- 在 ServletContext 对象被创建后调用 * ServletContextEvent -- 事件类对象 * 该类有 getServletContext(),用来获取 ServletContext 对象,即获取事件源对象 */ public class MyServletContextListener implements ServletContextListener {public void contextDestroyed(ServletContextEvent evt) {System.out.println("销毁 ServletContext 对象"); } public void contextInitialized(ServletContextEvent evt) {System.out.println("创建 ServletContext 对象"); } }
/* * HttpSessionListener 实现类 * sessionCreated() -- 在 HttpSession 对象被创建后被调用 * sessionDestroyed() -- -- 在 HttpSession 对象被销毁前调用 * HttpSessionEvent -- 事件类对象 * 该类有 getSession(),用来获取当前 HttpSession 对象,即获取事件源对象 */ public class MyHttpSessionListener implements HttpSessionListener {public void sessionCreated(HttpSessionEvent evt) {System.out.println("创建 session 对象"); } public void sessionDestroyed(HttpSessionEvent evt) {System.out.println("销毁 session 对象"); } }
/* * ServletRequestListener 实现类 * requestDestroyed() -- 在 ServletRequest 对象被销毁前调用 * requestInitialized() -- 在 ServletRequest 对象被创建后调用 * ServletRequestEvent -- 事件类对象 * 该类有 getServletContext(),用来获取 ServletContext 对象 * 该类有 getServletRequest(),用来获取当前 ServletRequest 对象,即事件源对象 */ public class MyServletRequestListener implements ServletRequestListener {public void requestDestroyed(ServletRequestEvent evt) {System.out.println("销毁 request 对象"); } public void requestInitialized(ServletRequestEvent evt) {System.out.println("创建 request 对象"); } }
<listener> <listener-class>cn.itcast.listener.MyServletContextListener</listener-class> </listener> <listener> <listener-class>cn.itcast.listener.MyHttpSessionListener</listener-class> </listener> <listener> <listener-class>cn.itcast.listener.MyServletRequestListener</listener-class> </listener> <session-config> <session-timeout>1</session-timeout> </session-config>

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计2589字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中