【Listener机制】HttpSessionListener和HttpSessionAttributeListener

一、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 implements
		HttpSessionAttributeListener {

	// 加入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()");
	}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Listener(监听器)是Java语言中的一种设计模式,在Java Web中也有广泛的应用。Listener主要用于监听Web应用中的事件,当事件发生时,会触发相应的Listener中的方法,从而实现一些自定义的功能。 Listener主要有以下几种类型: 1. ServletContextListener:监听ServletContext的创建和销毁事件; 2. ServletRequestListener:监听ServletRequest的创建和销毁事件; 3. HttpSessionListener:监听HttpSession的创建和销毁事件; 4. ServletContextAttributeListener:监听ServletContext中属性的添加、修改和删除事件; 5. ServletRequestAttributeListener:监听ServletRequest中属性的添加、修改和删除事件; 6. HttpSessionAttributeListener:监听HttpSession中属性的添加、修改和删除事件; 7. HttpSessionBindingListener:监听HttpSession中的对象绑定和解绑事件; 8. HttpSessionActivationListener:监听HttpSession的钝化和活化事件。 Listener的主要功能包括: 1. 监听Web应用中的事件,当事件发生时,触发相应的方法,从而实现一些自定义的功能,比如记录日志、维护在线用户列表等; 2. 在事件发生前或发生后对相关对象进行修改或处理,从而实现一些常见的功能,比如权限控制、字符编码转换、请求参数过滤等; 3. 在Web应用启动和关闭时执行一些初始化和清理工作,比如初始化数据库连接池、清理临时文件等。 总的来说,ListenerJava Web中的一种非常有用的组件,可以方便地监听Web应用中的事件,从而实现一些自定义的功能或常见的操作。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值