zoukankan      html  css  js  c++  java
  • 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: omcatworkCatalinalocalhost\_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

  • 相关阅读:
    如何追MM?
    梦里蓝天
    数据仓库USEFUL LINKS(不断更新中)
    The day of blog
    Data Warehouse Architectures in an Internet Age
    数据仓库的数据存储 [转]
    阿里汉的7宗罪
    数据仓库中的一些争议之我见(一)
    java 字符串替换,分割基础
    java 时间比较随笔
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789436.html
Copyright © 2011-2022 走看看