- 主要监听常见的域对象: HttpServletRequest, HttpSession ,ServletContext
- 监听以上对象的创建和销毁: 必须在web.xml中注册监听器
- HttpServletRequest:浏览器一次请求开始就创建request对象,请求结束销毁request对象
- HttpSession: getSession()没有就创建,有就直接使用,session销毁:invalidate()
- ServletContext:程序被放到tomcat服务器容器中,ServletContext就创建, 程序从tomcat服务器中移除或者关闭服务器,ServletContext销毁了
- 案例:
6.1定时销毁session;
计时器对象Timer
TimerTask: 计时器任务
计时器对象执行计时器任务(每隔5s去遍历检测所有的session,如果session存活时间超过了5s就销毁)
6.2 HttpSessionListener: 监听到创建把Session存储到ServletContext中。list
6.3ServletContextListener: 监听到ServletContext的创建
每隔5s去遍历检测所有的session,如果session存活时间超过了5s就销毁 备注: 事件: 动作一件事情 ServletContextEvent 事件源:产生事件的对象 ServletContext 监听器:用于监听的对象 ServletContextListener 注册监听器:要让监听器监听到事件,必须要注册 web.xml 定时销毁session: 案例的重要点 a.从ServletContext中获取list对象,直接给list添加内容,但是并没有重新再次setAttribute(); java存储结构: 堆,栈,方法区,常量池。。。。。 b.java计时器 Timer TimerTask: 线程 c. list移除的时候list大小在变化,再次操作list会异常。 为了解决使用list迭代器
监听以上对象的属性变化: 必须在web.xml中注册监听器
ServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
共同的方法:
8.1 attributeAdded
8.2 attributeRemoved
8.3 attributeReplaced使用步骤:
1.创建一个类实现属性监听接口,并实现其中的方法;
2.在web.xml中注册该监听器
具体代码看整理的<资料>文件夹
另外:http://www.cnblogs.com/w-wfy/p/6425357.html 可以看看