对Session的监听分生命周期的监听,和Session上Attribute变化的监听两种。
步骤1:编写 SessionListener
步骤2:配置web.xml
步骤3:测试
步骤4:编写 SessionAttributeListener
步骤5:配置web.xml
步骤6:testSession.jsp
步骤7:测试
步骤 1 : 编写 SessionListener
SessionListener 实现了接口 HttpSessionListener
表示session创建的时候执行
表示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
当在session中增加属性时触发
当在session中移除属性时触发
当替换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