一、 域对象监听器
监听三大域的创建和销毁
1.监听请求对象的创建和销毁
实现ServletRequestListener接口
requestInitialized方法:请求对象创建执行方法
requestDestroyed:请求对象销毁执行方法
请求对象的生命周期:
创建:客户端发送请求,Tomcat会创建请求对象
销毁:服务器返回响应,Tomcat会将请求对象销毁
2.监听会话域对象的创建和销毁
实现HttpSessionListener接口
sessionCreated:会话域创建执行方法
sessionDestroyed:会话域销毁执行方法
会话对象的生命周期:
创建:服务端使用到会话对象才会被创建
销毁:会话域对象过期时间到后会被销毁
3.监听全局域对象的创建和销毁
实现ServletContextListener接口
contextInitialized:全局域对象创建执行方法
contextDestroyed:全局域销毁执行方法
全局域对象的生命周期:
创建:服务器创建时
销毁:服务器正常关闭时
二、属性监听器
监听三大域属性值的增加修改和删除
1.监听请求域对象属性的添加、删除、替换
实现ServletRequestAttributeListener接口
attributeAdded:请求域对象属性的添加
attributeRemoved:请求域对象属性的删除
attributeReplaced:请求域对象属性的替换
2.监听会话对象属性的添加、删除、替换
实现HttpSessionAttributeListener接口
attributeAdded:会话对象属性的添加
attributeRemoved:会话对象属性的删除
attributeReplaced:会话对象属性的替换
3.全局域对象属性的添加、删除、替换
实现ServletContextAttributeListener接口
attributeAdded:局域对象属性的添加
attributeRemoved:局域对象属性的删除
attributeReplaced:局域对象属性的替换
三、 监听HttpSession中的对象(JavaBean)
1.监听session域中javaBean对象的绑定(添加)和解绑(删除)
实体类实现HttpSessionBindingListener接口
理解:监听该类(User)对象在session中的绑定(添加)和解绑(删除)
valueBound -- 绑定方法
valueUnbound -- 解绑方法
2.监听session域中javaBean对象的钝化(序列化)和活化(反序列化)
实体类实现HttpSessionActivationListener, Serializable接口
理解:监听该类(User)对象在session中的钝化(序列化)和活化(反序列化)
sessionWillPassivate -- 钝化(序列化):将类(User)对象写入到文件
sessionDidActivate -- 活化(反序列化):将文件里的对象读取到程序中
注意:
实现session的钝化和活化底层使用到了ObjectInputStream、ObjectOutputStream
钝化和活化的JavaBean对象必须实现Serializable(序列化接口)
四、面试题
面试题:Session中的JavaBean对象什么情况下会钝化 session未过期 JavaBean对象所属的类必须实现Serializable接口 服务器正常关闭 !!以上三个条件必须都满足!! 面试题:Session中的JavaBean对象什么情况下不会钝化 1.session对象过期 2.session.invalidate(); 3.服务器非正常关闭 !!以上三个条件满足一个即可!! 面试题:Session中的JavaBean对象什么情况下不会活化 服务器启动,但是session对象过期了