Listener系列教材 (三)- Session

 

对Session的监听分生命周期的监听,和Session上Attribute变化的监听两种。

步骤1:编写 SessionListener 
步骤2:配置web.xml
步骤3:测试
步骤4:编写 SessionAttributeListener
步骤5:配置web.xml
步骤6:testSession.jsp
步骤7:测试

步骤 1 : 编写 SessionListener 

SessionListener 实现了接口 HttpSessionListener 

sessionCreated()


表示session创建的时候执行

sessionDestroyed()


表示session销毁的时候执行

package listener;

 

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

 

public class SessionListener implements HttpSessionListener {

 

    @Override

    public void sessionCreated(HttpSessionEvent e) {

 

        System.out.println("监听到 session 创建, sessionid 是: " + e.getSession().getId());

    }

 

    @Override

    public void sessionDestroyed(HttpSessionEvent e) {

 

        System.out.println("监听到 session 销毁, sessionid 是: " + e.getSession().getId());

    }

}

步骤 2 : 配置web.xml

配置SessionListener

<listener>

    <listener-class>listener.SessionListener</listener-class>

</listener>

步骤 3 : 测试

随意访问任意页面
如果是第一次访问,都会触发session创建,后续访问不会触发session的创建

关闭浏览器,再访问,也会触发session的创建。 但是有的浏览器,即便是关闭了,下一次打开,也会发送以前sessionid到服务器,这样服务器就不会创建新的session。 请参考 session原理示意图

session的销毁不易观察到,一般说来服务器会设置session存活时间为30分钟。所以需要等待才能观察到销毁

注: 在重启tomcat测试之前, 要删除D:\tomcat\work\Catalina\localhost\_\SESSIONS.ser 这个文件。 这个文件是tomcat存放以前的session的,为了观察到创建session的活动,需要tomcat重启之前把以前的session都清除掉,才能观察到新创建session的活动

测试

步骤 4 : 编写 SessionAttributeListener

SessionAttributeListener 实现接口 HttpSessionAttributeListener 
 

attributeAdded()


当在session中增加属性时触发
 

attributeRemoved()


当在session中移除属性时触发
 

attributeReplaced()


当替换session中的属性时触发

package listener;

 

import javax.servlet.http.HttpSessionAttributeListener;

import javax.servlet.http.HttpSessionBindingEvent;

 

public class SessionAttributeListener implements HttpSessionAttributeListener {

 

    @Override

    public void attributeAdded(HttpSessionBindingEvent e) {

 

        System.out.println("session 增加属性 ");

        System.out.println("属性是" + e.getName());

        System.out.println("值是" + e.getValue());

 

    }

 

    @Override

    public void attributeRemoved(HttpSessionBindingEvent e) {

        // TODO Auto-generated method stub

        System.out.println("session 移除属性 ");

 

    }

 

    @Override

    public void attributeReplaced(HttpSessionBindingEvent e) {

        // TODO Auto-generated method stub

        System.out.println("session 替换属性 ");

 

    }

}

步骤 5 : 配置web.xml

配置 listener.SessionAttributeListener

<listener>

    <listener-class>listener.SessionAttributeListener</listener-class>

</listener>   

步骤 6 : testSession.jsp

在testSession.jsp中,设置session属性 test=1,test=2, 接着删除

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

 

<%

    session.setAttribute("test", 1);

    session.setAttribute("test", 2);

    session.removeAttribute("test");

%>

步骤 7 : 测试

访问页面

http://127.0.0.1/testSession.jsp


观察结果

测试


更多内容,点击了解: https://how2j.cn/k/listener/listener-session/606.html

posted @ 2020-04-03 09:40  Lan_ht  阅读(110)  评论(0编辑  收藏  举报