码迷,mamicode.com
首页 > 其他好文 > 详细

对象感知监听器

时间:2019-10-12 23:11:22      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:col   目录   ble   rem   tostring   cep   ons   wap   persist   

与session中绑定的对象相关。

1、session的绑定与解绑:

(1)创建Person类,实现HttpSessionBindingListener 接口,用来监听session对象的绑定与解绑。

package pers.zhb.domain;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class Student implements HttpSessionBindingListener {
    private String studentno;
    private String sname;
    private String sex;

    @Override
    public String toString() {
        return "Student{" +
                "studentno=‘" + studentno + \‘ +
                ", sname=‘" + sname + \‘ +
                ", sex=‘" + sex + \‘ +
                };
    }

    public String getStudentno() {
        return studentno;
    }
    public void setStudentno(String studentno) {
        this.studentno = studentno;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("Student对象被绑定了。");
    }
    @Override
    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("Student对象被解绑了");
    }

}

(2)创建Servlet,向Session中添加对象元素,并将对象元素移除:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Student student=new Student();
        student.setSex("");
        student.setSname("zhai");
        student.setStudentno("20171514141");
        HttpSession session=request.getSession();
        session.setAttribute("student",student);
        session.removeAttribute("student");
    }

技术图片

 

 

 与域对象监听器不同,对象感知监听器不需要在web.xml文件中进行配置。

2、session对象的钝化与活化:

钝化:将Session中的对象持久化存储到磁盘上。

活化:将磁盘上的对象再次恢复到Session内存中。

(1)钝化:在Student类中实现HttpSessionActivationListener接口,用来监听Session中的对象的钝化与活化。

package pers.zhb.domain;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
import java.io.Serializable;

public class Student implements HttpSessionActivationListener , Serializable {
    private String studentno;
    private String sname;
    private String sex;

    @Override
    public String toString() {
        return "Student{" +
                "studentno=‘" + studentno + \‘ +
                ", sname=‘" + sname + \‘ +
                ", sex=‘" + sex + \‘ +
                };
    }

    public String getStudentno() {
        return studentno;
    }
    public void setStudentno(String studentno) {
        this.studentno = studentno;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public void sessionWillPassivate(HttpSessionEvent httpSessionEvent) {
        System.out.println("session域中的对象被钝化了");
    }

    @Override
    public void sessionDidActivate(HttpSessionEvent httpSessionEvent) {
        System.out.println("Session域中的对象被活化了");
    }
}

(2)创建一个Servlet将Student对象存放到Session域中:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Student student=new Student();
        student.setSex("");
        student.setSname("zhai");
        student.setStudentno("20171514141");
        HttpSession session=request.getSession();
        session.setAttribute("student",student);
        System.out.println("Student对象已经被放到Session域当中了");
    }

(3)钝化过程:先访问Servlet,将Student对象存放到Session中,关闭服务器的时候被钝化。可以在服务器work文件夹下面查看。(.ser文件)

(4)将不经常用的Session对象钝化到磁盘上:

技术图片

 

 在META-INF目录下,创建context.xml文件,可以通过设置时间将Session中存储的对象自动钝化:

<?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="dunhua" />
    </Manager>
</Context>

 技术图片

 

对象感知监听器

标签:col   目录   ble   rem   tostring   cep   ons   wap   persist   

原文地址:https://www.cnblogs.com/zhai1997/p/11651085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!