a.web中有三种事件源:ServletContext --->HttpSession----> ServletRequest
b. ServletContext
-
- 对象创建和销毁: ServletContextListener在web容器部署时产生,在web容器重新部署时销毁并再次产生新的ServletContextListener
- 属性变化: ServletContextAttributeListener 属性的增加,修改和移除
监听的是application.setAttribute("xiaoli","小李");application.setAttribute("xiaoli","小李");application.removeAttribute("xiaoli","小李");
c.ServletRequest对象
- 创建和销毁,ServletRequestListener在request请求时执行对应的产生方法,在响应完毕后执行对应的销毁方法
- 属性变化: ServletRequestAttributeListener 属性的增加,修改和移除 监听的是request.setAttribute("xiaoli","小李");request.setAttribute("xiaoli","小李");request.removeAttribute("xiaoli","小李");
d.HttpSession对象
- 创建和销毁,HttpSessionListener在web容器创建session时执行对应的产生方法,在web容器销毁session时执行对应的销毁方法
- 属性变化: HttpSessionAttributeListener 属性的增加,修改和移除 监听的是session.setAttribute("xiaoli","小李");session.setAttribute("xiaoli","小李");session.removeAttribute("xiaoli","小李");
e.HttpSessionBindingListener监听器,专门用于监听JavaBean对应在HttpSession中的状态情况,只需要在JavaBean中对其实现即可,不需要再xml中配置
但凡是监听三个域对象,就需要在web.xml文件中配置,除此之外,无需配置
f.HttpSessionActivationListener监听器,专门用于监听javaBean对象的钝化(内存到外存)和激活(外存到内存) 无需配置web.xml,但需要在META-INF下配置context.xml如下
<?xml version="1.0" encoding="utf-8"?>
<Context>
<Manager
className="org.apache.catalina.session.PersistentManager"
maxIdleSwap="1">
<Store
className="org.apache.catalina.session.FileStore"
directory="itcast" />
</Manager>
</Context>
其中的maxIdleSwap是钝化的时间,1分钟;directory是钝化和激活的目录,只写itcast的话,就默认在tomacat的work\Catalina\localhost\day21下产生itcast文件夹,并把session放在其中
转载自原文链接, 如需删除请联系管理员。
原文链接:8种web监听器详解,转载请注明来源!