版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a592381841/article/details/85254416
概述
- 监听器是一个接口,内容由自己实现
- 监听器需要注册(web.xml中)
- 监听器中方法,会在特殊事件发生时被调用
- JavaWeb中有八大监听器
域监听器(6个)
JavaWeb三大域:ServletContext、HTTPSession、ServletRequest
每一个域有两个监听器;
ServletContext
- 生命周期监听:ServletContextListener
- 属性监听:ServletContextAttributeListener
HTTPSession
- 生命周期监听:HTTPSessionListener
- 属性监听:HTTPSession
ServletRequest
- 生命周期监听:ServletRequestListener
- 属性监听:ServletRequestAttributeListener
生命周期监听方法
- 创建时执行
- 销毁时执行
属性监听方法
- 添加属性时
- 删除属性时
- 替换属性时
感知监听(两个)
监听器作用在JavaBean上.JavaBean可以自己感知在session中状态. 这类监听器不用配置.
对象类型 | 对应的监听器 |
---|---|
HttpSession | HttpSessionBindingListener(绑定,解除绑定) |
HttpSession | HttpSessionActivationListener(钝化和活化) |
HttpSessionBindingListener(绑定,解除绑定)
监听HTTPSession中JavaBean的绑定和解除绑定状态
HttpSessionActivationListener(钝化和活化)
sessionDidActivate(HttpSessionEvent se); – 活化,
SessionWillPassivate(HttpSessionEvent se); – 钝化,
注意:
session序列化
服务器关闭时,服务器会把session保存到硬盘中。以sessionID命名,以“.session”作为扩展名。一个session就一个文件。其中session包含的内容是有实现java.io.Serializable 接口的类的实例。
当Tomcat再次开启时,session对象重新被加载
在Tomcat的 conf/context.xml中加入<Manager pathname="" /> 就可以关闭序列化
session的钝化和活化
钝化:将session长期不活动,则将内存中session序列化为文件保存在硬盘中
活化:将硬盘中的session文件加入内存中。
实现方法:
将下面配置文件放到tomcat\conf\catalina\localhost目录下!文件名称为项目名称。
当然也可以放到tomcat的config下的context.xml中,这样就是对Tomcat下所有应用都生效
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"[如果session在1分钟内没有使用,那么Tomcat就会钝化它]>
<Store className="org.apache.catalina.session.FileStore" directory="mysession"[把session序列化到Tomcat\work\Catalina\localhost\listener\mysession目录下。]/>
</Manager>
</Context>