前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >监听器的生命周期

监听器的生命周期

作者头像
星哥玩云
发布2022-09-14 21:16:52
2160
发布2022-09-14 21:16:52
举报
文章被收录于专栏:开源部署开源部署

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分钟;
代码语言:javascript
复制
/*
 * 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对象");
	}
}
代码语言:javascript
复制
/*
 * 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对象");
	}
}
代码语言:javascript
复制
/*
 * 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对象");
	}
}
代码语言:javascript
复制
<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>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、创建与销毁监听器:
  • 2、事件对象
  • 3、案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档