监听器 Listener

监听器:监听某个对象状态的变化

被监听的对象:request、session、servletContext

监听对象的创建和销毁/对象属性的变化

ServletContext HttpSession ServletRequest
ServletContextListener HttpSessionListener ServletRequestListener
ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener

 

 

 

与session相关的监听器,监听session中的对象

HttpSessionBindingListener 对象在session绑定或对象从session中解绑

HttpSessionActivationListener 对象的钝化与活化,(大访问量时考虑将session持久化)

这两个接口是绑到对象中的,不需要在web.xml中配置

钝化:将session持久化到磁盘

活化:将session从磁盘到内存

tomcat的钝化:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- maxIdleSwap:session中的对象多长时间不使用就钝化 单位:分钟 -->
<!-- directory:钝化后的对象的文件写到磁盘的哪个目录下 配置钝化的对象文件在work/catalina/localhost/钝化文件 -->
<Manager
className="org.apache.catalina.session.PersistentManager"
maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore"
directory="demo01" />
</Manager>
</Context>

package cn.sasa.domain;

import java.io.Serializable;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;

//HttpSessionBindingListener--- Customer对象绑定到session或从session解绑
//HttpSessionActivationListener---钝化/活化。钝化:将session持久化到磁盘。活化:session从磁盘到内存。(大访问量时可将session设置持久化)
//Serializable 序列化到磁盘
public class Customer implements HttpSessionBindingListener, HttpSessionActivationListener,Serializable{

    private static final long serialVersionUID = 1L;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String name;
    
    public void valueBound(HttpSessionBindingEvent event) {
        System.out.println("cus 绑定");
    }
  
    public void valueUnbound(HttpSessionBindingEvent event) {
        System.out.println("cus 解绑");
    }
    //钝化
    public void sessionWillPassivate(HttpSessionEvent se) {
        System.out.println("Customer passivate");
    }
    
    //活化
    public void sessionDidActivate(HttpSessionEvent se) {
        System.out.println("Customer Activate");
    }

}

 

posted @ 2019-04-08 18:30  SasaL  Views(132)  Comments(0Edit  收藏  举报