JavaWeb(十)---监听器(Listener)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a592381841/article/details/85254416

概述

  1. 监听器是一个接口,内容由自己实现
  2. 监听器需要注册(web.xml中)
  3. 监听器中方法,会在特殊事件发生时被调用
  4. JavaWeb中有八大监听器

域监听器(6个)

JavaWeb三大域:ServletContext、HTTPSession、ServletRequest

每一个域有两个监听器;

ServletContext

  1. 生命周期监听:ServletContextListener
  2. 属性监听:ServletContextAttributeListener

HTTPSession

  1. 生命周期监听:HTTPSessionListener
  2. 属性监听:HTTPSession

ServletRequest

  1. 生命周期监听:ServletRequestListener
  2. 属性监听:ServletRequestAttributeListener

生命周期监听方法

  1. 创建时执行
  2. 销毁时执行

属性监听方法

  1. 添加属性时
  2. 删除属性时
  3. 替换属性时

感知监听(两个)

​ 监听器作用在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>

猜你喜欢

转载自blog.csdn.net/a592381841/article/details/85254416