【Listener机制】HttpSessionListener和HttpSessionAttributeListener
来源:互联网 发布:北大青鸟java班学费 编辑:程序博客网 时间:2024/05/22 03:34
一、HttpSessionListener
HttpSessionListener是对Session的一个监听,主要监听关于Session的两个事件,即初始化和销毁。
【原理】
接口HttpSessionListener有两个方法,分别为:
VoidsessionCreated(HttpSessionEvent se):当session创建时会收到通知。
VoidsessionDestroyed(HttpSessionEvent se):当session销毁时也会收到通知。
【实现】
Web.xml
<listener><listener-class>com.bjpowernode.drp.util.listener.TestHttpSessionListener</listener-class></listener>
监听类:
package com.bjpowernode.drp.util.listener;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class TestHttpSessionListener implements HttpSessionListener {public void sessionCreated(HttpSessionEvent se) {System.out.println("----------TestHttpSessionListener.sessionCreated()-----------");}public void sessionDestroyed(HttpSessionEvent se) {System.out.println("----------TestHttpSessionListener.sessionDestroyed()-----------");}}
【应用】
根据HttpSessionListener的特性,如果想在用户登录或者退出时做些什么,就可以设置session监听,例如:防止用户重复登录,统计用户在线数量,统计用户登录频率等等。
二、HttpSessionAttributeListener
HttpSessionAttributeListener是SessionAttribute的监听,当在会话对象中加入属性、移除属性或替换属性时,就会调用HttpSessionAttributeListener监听器。可以和HttpSessionBindingEvent合作着使用。
【原理】
接口HttpSessionAttributeListener有3个方法:
public voidattributeAdded(HttpSessionBindingEvent se):在session中添加对象时触发此操作
public voidattributeRemoved(HttpSessionBindingEvent se):修改、删除session中添加对象时触发此操作
public voidattributeReplaced(HttpSessionBindingEvent se):在Session属性被重新设置时
【实现】
Web.xml:
<listener><listener-class>com.bjpowernode.drp.util.listener.TestHttpSessionAttributeListener</listener-class></listener>
监听类:
package com.bjpowernode.drp.util.listener;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;public class TestHttpSessionAttributeListener implementsHttpSessionAttributeListener {// 加入session时的监听方法.public void attributeAdded(HttpSessionBindingEvent se) {System.out.println("TestHttpSessionAttributeListener-->>>attributeAdded()");System.out.println("name=====" + se.getName());System.out.println("value=====" + se.getValue());// 判断if ("user_info".equals(se.getName())) {Integer count = (Integer) se.getSession().getServletContext().getAttribute("count");if (count == null) {count = 1;} else {count++;}se.getSession().getServletContext().setAttribute("count", count);}}// session失效时的监听方法public void attributeRemoved(HttpSessionBindingEvent se) {System.out.println("TestHttpSessionAttributeListener-->>>attributeRemoved()");}// session覆盖时的监听方法.public void attributeReplaced(HttpSessionBindingEvent se) {System.out.println("TestHttpSessionAttributeListener-->>>attributeReplaced()");}}
- 【Listener机制】HttpSessionListener和HttpSessionAttributeListener
- Listener之使用HttpSessionListener和HttpSessionAttributeListener
- Listener监听器(HttpSessionListener,HttpSessionAttributeListener)
- 使用HttpSessionListener和HttpSessionAttributeListener(1)
- HttpSessionListener, HttpSessionAttributeListener的用法
- HttpSessionListener, HttpSessionAttributeListener的用法
- HttpSessionListener, HttpSessionAttributeListener的用法
- HttpSessionListener, HttpSessionAttributeListener的用法及简单实例
- HttpSessionListener 、HttpSessionAttributeListener以及HttpSessionBindingListener 的区别
- Listener监听器之HttpSessionListener
- Listener监听器之HttpSessionListener
- Listener监听器之HttpSessionListener
- Listener监听器之HttpSessionListener
- [Servlet] 配置listener监听器(HttpSessionListener和HttpSessionBindingListener)细说
- [Servlet] 配置listener监听器(HttpSessionListener和HttpSessionBindingListener)细说
- Java下的Session监控:HttpSessionListener HttpSessionAttributeListener || HttpSessionBindingListener
- Servlet 使用Filter HttpSessionListener HttpSessionAttributeListener实现webSession管理
- HttpSessionBindingListener和HttpSessionAttributeListener区别
- 关于PGPool
- JavaScript共享onload事件简便 函数
- Leetcode 377 - Combination Sum IV(DAG上的dp)
- 软件工程之模块独立性
- PostgreSQL 的痛点
- 【Listener机制】HttpSessionListener和HttpSessionAttributeListener
- 详解socket和tcp/ip协议
- Spring Context组件
- VBS应用-更改IP
- android 弹出软键盘相关坑的解决方法
- STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
- HDU 6012 Lotus and Horticulture 离散化
- Touch 事件的分发和消费机制
- java按照日期查询,查询不到结束日期所对应的数据