Servlet事件监听
来源:互联网 发布:php三级分销数据库设计 编辑:程序博客网 时间:2024/05/19 11:50
1、ServletContextListener
此事件是监听servlet容器的上下文创建和销毁的事件
contextInitialized(ServletContextEvent)在servlet容器创建成功后调用,初始化一些全局servlte变量等。
ServletContextEvent。getServletContext()得到一个上下文对象
contextDestroyed(ServletContextEvent)
servlet容器被销毁的时候调用。如在tomcat运行之后,删除项目。就会被调用。
2、属性改变事件
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
此事件是在ServletContext的setAttribute和removeAttribute方法调用时候触发。
attributeAdded(ServletContextAttributeEvent event)
属性添加的时候调用
attributeRemoved(ServletContextAttributeEvent event)
属性删除的时候调用
attributeReplaced(ServletContextAttributeEvent event)
属性重置的时候调用
ServletContextAttributeEvent。 getName() 和getValue()得到对应的值
HttpSessionAttributeListener
此事件是在Session当前会话的setAttribute和removeAttribute方法调用时候触发。
HttpSessionBindingEvent。 getName() 和getValue()得到对应的值
ServletRequestAttributeListener
此事件是在当前请求阶段的setAttribute和removeAttribute方法调用时候触发。
ServletRequestAttributeEvent。 getName() 和getValue()得到对应的值
3、HttpSessionListener
此事件是监听session会话的创建和销毁的
sessionCreated(HttpSessionEvent se)
当用浏览器第一次访问创建一个会话的时候就调用
sessionDestroyed(HttpSessionEvent se)
当会话被销毁的时候调用
销毁的方式有两种:
HttpSession。invalidate()调用就直接过期。在web。xml中配置过期时间
<session-config>
<session-timeout>1</session-timeout> 分钟为单位
</session-config>
HttpSessionEvent。getSession()
可以得到一个HttpSession,HttpSession。getid()可以得到一个当前会话的唯一标识
应用场景:可以在用户做登出或者登入的时候做个记录。
4、HttpSessionIdListener
tomact7只支持到3.0,这个是3.1的api 要到tomcat8.0才能;
5、HttpSessionActivationListener
当会话进入活化和钝化的事件监听
sessionWillPassivate(HttpSessionEvent se)
活化的时候调用
sessionDidActivate(HttpSessionEvent se)
钝化的时候调用
应用场景:是在于当服务器重启的时候,正好用户在购物的时候,为了重启成功后还能有用户的会话。
5.1
建立一个类,实现HttpSessionActivationListener 和Serializable。然后不用注册事件。
5.2
session.setAttribute("p", 设置上面的新建的类);
5.3
配置
5.3.1 context。xml中配置
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager className="org.apache.catalina.session.PersistentManager"
debug="0"
saveOnRestart="true"
maxActiveSession="-1"
maxActiveSessions-可处于活动状态的session数,default -1 不限制
minIdleSwap="-1"
maxIdleSwap="-1"
minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File Store中;(-1表示没有限制)
maxIdleBackup="-1"
maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制)
>
<Store className="org.apache.catalina.session.FileStore"
directory-文件存储位置 默认:work\Catalina\host name\web app\session\文件名.session
directory="e:/see">
</Store>
</Manager>
</Context>
在这里配置会报错,在活化的时候,过了一段时间会出现新建类找不到。但是不影响使用,可能是全部上下文都被适应的问题
5.3.2 server.xml中
<Context path="/sessionActivationWeb" docBase="F:\myeclipse\javaweb\apache-tomcat-7.0.79-src\output\build\webapps\web4"> <Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true" maxActiveSession="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1"> <Store className="org.apache.catalina.session.FileStore" directory="e:/see"> </Store> </Manager></Context>这样子是最正确的形式
效果是:
你运行之后,浏览器访问。记录会话,然后停止tomcat,会钝化sessionDidActivate 这里可以保存会话信息。并且在dir中生成会话.seesion文件。重启之后会活化调用sessionWillPassivate()在这里可以重新恢复用户数据。实际上如果在tomcat配置PersistentManager,本身他就会去保存会话,但是不保存数据。只要没有关闭浏览器,就还是一个会话的。关闭了可以在url后面加上;jseesionid=就可以又是同一个会话。这功能貌似是在集群的时候比较有用
6 HttpSessionBindingListener
此事件是在session绑定和解绑的时候调用。它不用配置到web。xml进行事件监听。只需要在session。setAttribute()设置它。
valueBound
session。setAttribute()时候立即调用
valueUnbound
session。setAttribute()替换,session。removeAttribute(),session。invalidate(),session过期这四种情况会调用
7 ServletRequestListener
再一次请求的事件监听,需要注册
requestDestroyed(ServletRequestEvent sre)
请求结束的时候调用
requestInitialized(ServletRequestEvent sre)
请求前调用
- Servlet事件监听
- [Servlet]事件监听,ServletContext的事件监听
- [Servlet]事件监听,ServletContext的事件监听
- 关于Servlet中的事件监听
- 实验8 Servlet事件监听
- [Servlet]HttpSession的事件监听、HttpServletRequest的事件监听
- Jsp/Servlet中的Listener事件监听
- java_web学习第三天(Servlet的事件监听)
- Servlet监听
- Servlet监听
- servlet监听
- servlet监听
- servlet监听
- servlet监听
- servlet监听
- servlet监听
- Servlet监听
- servlet监听
- ffmpeg玩转视频录制与压缩
- 特殊集合 队列(queue) 堆栈(stack) 哈希表(hashtable)
- The number on the board
- 千万级规模高性能、高并发的网络架构经验分享
- android jni调用so库
- Servlet事件监听
- Ubuntu 16.04 安装不了有道词典解决方法
- A
- Javaday01环境配置
- ORA-01034: ORACLE not available
- Day02jQuery遍历
- CodeForces
- spring之BeanFactory
- Ubuntu16.04安装bazel