HttpSession 相关的监听

在前面我们学习了servletconfig和servletContext 知道了他们的应用方式,以及servletcontext 相关的监听后我们下面来看看httpsession 相关的监听

Httpsession 相关的监听有: HttpSessionListener,HttpSessionAttributeListener,HttpSessionBindingListener以及HttpSessionActivationListener 下面我们就来一个个看看相关实现:

一、HttpSessionListener 会话生命周期的监听

1、HttpSessionListener  实现这个接口并实现sessionCreated(HttpSessionEventarg0)和sessionDestroyed(HttpSessionEvent arg0)这两个方法就可以实现session 生命周期的监听,也就是在session创建的时候会调用sessionCreated(HttpSessionEvent arg0) 方法而通过HttpSessionEvent 这个类可以获取session对象。同样在session过期时会调用sessionDestroy(HttpSessionEvent
arg0)通过方法的参数HttpSessionEvent对象可以获取session对象

2、配置方式有两种:第一使用java的注解:javax.servlet.annotation.WebListener

第二种就是web.xml 配置文件中配置监听

<listener>

<listener-class>soufun.com.HttpSessionL</listener-class>

</listener>

3、实例:在session创建或销毁时会调用这个类的相应方法

package soufun.com;

importjavax.servlet.http.HttpSession;

importjavax.servlet.http.HttpSessionEvent;

importjavax.servlet.http.HttpSessionListener;

/**

*@author WHD

*data 2015年8月5日

*/

public classHttpSessionL implements HttpSessionListener{

privatestatic int count=0;

@Override

publicvoid sessionCreated(HttpSessionEvent arg0) {

//TODO Auto-generated method stub

System.out.println("getthe  session object");

HttpSessionsession=arg0.getSession();

HttpSessionL.count++;

session.setAttribute("count",count);

System.out.println("sessionstart:"+count);

}

@Override

publicvoid sessionDestroyed(HttpSessionEvent arg0) {

//TODO Auto-generated method stub

System.out.println("get out of session ");

HttpSessionL.count--;

HttpSessionsession= arg0.getSession();

session.setAttribute("count",count);

System.out.println("sessionconfigsessiontimeout:"+count);

}

publicstatic int getCount() {

returncount;

}

publicstatic void setCount(int count) {

HttpSessionL.count= count;

}

}

二、HttpSessionAttributeListener :

1、session属性变化的监听,也就是session中添加,修改,删除的时候会触发这个监听类,并且会调用相应的方法。

2、监听的配置:第一种使用java注释配置,javax.servlet.annotation.WebListener

第二种使用web.xml配置文件进行配置:

<listener>

<listener-class>soufun.com.HttpSessionAL</listener-class>

</listener>

3、实例:

(1)、使用javax.servlet.annotation.WebListener实现监听

package soufun.com;

importjavax.servlet.http.HttpSessionAttributeListener;

importjavax.servlet.http.HttpSessionBindingEvent;

importjavax.servlet.http.HttpSession;

importjavax.servlet.annotation.WebListener;

/**

*@author WHD

*data 2015年8月16日

*/

@WebListener()

public classHttpSessionAL implements HttpSessionAttributeListener {

@Override

publicvoid attributeAdded(HttpSessionBindingEvent arg0) {

System.out.println("session 中添加了属性-----");

}

@Override

publicvoid attributeRemoved(HttpSessionBindingEvent arg0) {

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

}

@Override

publicvoid attributeReplaced(HttpSessionBindingEvent arg0) {

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

}

}

(2)、使用web.xml配置文件进行配置

package soufun.com;

importjavax.servlet.http.HttpSessionAttributeListener;

importjavax.servlet.http.HttpSessionBindingEvent;

importjavax.servlet.http.HttpSession;

/**

*@author WHD

*data 2015年8月16日

*/

public classHttpSessionAL implements HttpSessionAttributeListener {

@Override

publicvoid attributeAdded(HttpSessionBindingEvent arg0) {

System.out.println("session 中添加了属性");

}

@Override

publicvoid attributeRemoved(HttpSessionBindingEvent arg0) {

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

}

@Override

publicvoid attributeReplaced(HttpSessionBindingEvent arg0) {

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

}

}

三、HttpSessionBindingListener

1、监听session中绑定实现这个接口的类的时候触发响应函数

2、HttpSessionBindingListener是session中添加实例了这个接口的类的时候会调用这个类的相关方法

3、实例,注意这个和之前的不同不用配置监听,而是向session中添加,移除实现了这个接口的类的时候,就会执行这个类ValueBound(HttpSessionBindingEvent arg0) 和 valueUnbound(HttpSessionBindingEvent arg0) 这两个方法

package soufun.com;

importjavax.servlet.http.HttpSessionBindingEvent;

importjavax.servlet.http.HttpSessionBindingListener;

/**

*@author WHD

*data 2015年8月10日

*/

// 注意这个类和其他的绑定的类不同这里不用配置,是要session中添加或移除就会触发这个类

public classUser  implementsHttpSessionBindingListener {

public  User(){};

@Override

publicvoid valueBound(HttpSessionBindingEvent arg0) {

//TODO Auto-generated method stub

System.out.print("在session中添加实现了httpsessionbindinglistener这个接口的类的时候会执行这个方法");

}

@Override

publicvoid valueUnbound(HttpSessionBindingEvent arg0) {

//TODO Auto-generated method stub

System.out.print("从session中移除实现了httpsessionbindinglistener这个接口的类的时候会执行这个方法");

}

}

// session 中添加实现了接口的类

protected voiddoPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

// 创建对象

User  user= new User();

//获取session

HttpSessionsession=request.getSession();

Stringid= session.getId();

System.out.println("session 中添加valuebound 属性" +"sessionid"+id);

session.setAttribute("user",user);

System.out.println("hsbl 的valueBound方法在执行");

// 从session会话中移除这个值

session.removeAttribute("user");

System.out.println("hsbl 的valueunBound 方法在执行");

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 18:32:24

HttpSession 相关的监听的相关文章

HttpServletRequest 相关的监听

于HttpServletRequest 相关的监听有 ServletRequestListener,ServletRequestAttributeListener也就是servletRequest对象生命周期的监听和request对象中属性的添加,修改,移除等属性值变动的监听 通过这request 生命周期的监听我们可以知道 servletRequest 的生命周期,也就是一个请求,当我们请求到达服务器,而服务器响应之后一个request 就结束了. 一.ServletRequestListen

好记性不如烂笔头40-javaWeb应用中HttpSession域的监听(4)

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件. HttpSessionListener 接口用于监听HttpSession对象的创建和销毁 创建一个Session时, sessionCreated (HttpSessionEvent se): 销毁一个Session时, sessionDestroy

DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版

前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务,与前篇中的不同,在DSAPI中,指令版同时包含了服务端与客户端. 先来看一下使用方法,几乎不需要太多的说明,当然,它是支持事件的.所谓指令版,即服务端和客户端收发都是基于短字串的,比如客户端发一个"hello",服务端收到这个指令后返回一个"Hi".为确保传输的数据有

java事件响应方法汇总(容器类监听、监听器类、AbstractAction、反射)

Java图形用户界面中,处理事件时所必须的步骤是: 1.创建接受响应的组件(控件)2.实现相关事件监听接口3.注册事件源的动作监听器4.事件触发时的事件处理 相应的可以通过以下的集中方式来作出事件响应. [java] view plaincopyprint? <span style="font-size: 18px;">一.容器类监听 效果:单击窗体中的三个按钮,实现相应的相应时间. </span><pre class="java" n

Android 通过反射及AIDL获取双卡手机SIM卡相关信息,及注册监听

在Android 5.0之前,虽然也有手机是双卡手机,但是双卡方案都是ODM厂商自己做的,或者是有芯片厂商提供的源码完成.因此,如果要在4.4甚至更早之前的手机上获取双卡信息,基本上不是一向巨大的工程.虽然之前尝试过使用反射方法去获取 高通的"android.telephony.MSimTelephonyManager"类 MTK的"com.mediatek.common.telephony.ITelephonyEx.aidl"类, 打印出函数的方法和参数以及类属性

IEngineEditor与IWorkspaceEdit,以及相关的事件监听

转自原文 IEngineEditor与IWorkspaceEdit,以及相关的事件监听 IEngineEditor适用于直接在图层上的编辑,例如使用"要素编辑"工具菜单上的"开始编辑"等工具进行编辑,相应的事件使用IWorkspaceEdit监听,例如以下的代码: private IEngineEditor m_EngineEditor = new EngineEditorClass(); private IEngineEditEvents_Event m_Engi

ALERT日志中常见监听相关报错之一:ORA-609错误的排查

参考MOS文档有: Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (文档 ID 1121357.1) Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (文档 ID 1538717.1) Fatal NI Connect 12560' And 'ORA-609 Opiodr Aborting Process' Errors In

Linux系统 端口知识以及相关监听工具

在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型. 物理端口指的是物理存在的端口,如ADSL Modem.集线器.交换机.路由器上用 于连接其他网络设备的接口,如RJ-45端口.SC端口等等.逻辑端口指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等.由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,这就是端口号 一.端口按端口号可以分为3大类:-------

oracle 11g RAC数据库监听配置相关

oracle RAC 监听配置基本和单实例的配置相同 11g之后 安装RAC的过程中,不需要执行netca来手动创建监听,在安装集群软件的时候,会自动创建监听程序: 而在DBCA建库的时候,又会自动创建tnsname.ora文件 强烈推荐这篇: http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1650424-zhs.html http://www.cnblo