Servlet监听器(二) - 会话事件、请求事件
监听器接口中的方法 / 会话事件
生命周期
会话对象的创建 / 第一次 调用getSession()时创建
会话对象的销毁 / 设置回话超时 : 1.设置最大激活时间;2.调用.invalidate()方法;3.在web.xml 进行配置 <session-config>2</session-config>
//监听会话对象的生命周期需要实现HttpSessionListener接口 public class MySessionListener implements HttpSessionListener { //session对象被创建时调用 @Override public void sessionCreated(HttpSessionEvent event) { String sessionId = event.getSession().getId(); //获取session对象的id } //session对象被销毁时调用 @Override public void sessionDestroyed(HttpSessionEvent event) {} }
属性变化
//监听会话对象的属性变化需要实现HttpSessionAttributeListener接口 public class MySessionListener implements HttpSessionAttributeListener { //会话对象添加属性时调用 @Override public void attributeAdded(HttpSessionBindingEvent event) { //获得属性的键名 String name = event.getName(); //获得属性的值 String value = event.getValue(); } //会话对象删除属性时调用 @Override public void attributeRemoved(HttpSessionBindingEvent event) {} //会话对象修改属性时调用 @Override public void attributeReplaced(HttpSessionBindingEvent event) { //获得修改后的值 String new_value = (String)event.getSession().getAttribute(event.getName()); } }
会话迁移(不需要绑定)
//会话迁移需要实现HttpSessionActivationListene接口 //对session对象做持久化操作 //1. session对象的钝化 : session对象的序列化(从内存中--->文件中) @Override public void sessionWillPassivate(HttpSessionEvent event) {} //2. session对象的激活: session对象的反序列化(文件中--->内存中) @Override public void sessionDidActivate(HttpSessionEvent event) {}
序列会需要进行文件配置
<!--tomcat -> conf -> context.xml中的配置文件--> <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true" maxIdleSwap="1"> <Store className="org.apache.catalina.session.FileStore" directory="mysession"/> </Manager>
对象绑定
必须跟对象进行绑定
//对象绑定需要实现HttpSessionBindingListener接口 // 该对象被存放到session对象中时被调用 @Override public void valueBound(HttpSessionBindingEvent event) {} // 该对象被session对象删除时调用 @Override public void valueUnbound(HttpSessionBindingEvent event) {}
监听器接口中的方法 / 请求事件
生命周期
当服务器接收到请求时,request就会被创建 当服务器响应回去时: request就会被销毁
//监听请求事件的生命周期需要实现ServletRequestListener接口 //请求对象被创建时调用 @Override public void requestInitialized(ServletRequestEvent sre) {} //请求对象被销毁时调用 @Override public void requestDestroyed(ServletRequestEvent sre) {}
属性变化
//监听请求事件的生命周期需要实现ServletRequestAttributeListener接口 ·@Override public void attributeAdded(ServletRequestAttributeEvent srae) { //请求对象中添加数据时调用 } @Override public void attributeRemoved(ServletRequestAttributeEvent srae) { //请求对象中删除数据时调用 } @Override public void attributeReplaced(ServletRequestAttributeEvent srae) { //请求对象中修改数据时调用 }
-
Thread.sleep(5000); / 线程休眠 单位ms
-