`
z3558646
  • 浏览: 7907 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

session listener的配置和使用 <转>

阅读更多
session listener的配置和使用
在web.xml中增加listener的配置信息   
     <listener>
        <listener-class>
            com.SessionListener(实现session监听器接口的类的名字,包也要写上)
        </listener-class>
    </listener>
    <listener>
        <listener-class>
            com.AnotherSessionListener(有多个session监听器的时候,加多个<listener>)
        </listener-class>
    </listener>

在JDK1.5和1.6的javax.servlet.http包中,可以看到session的监听器接口有4个,

分别是:HttpSessionListener

              HttpSessionAttributeListener

              HttpSessionBindingListener

              HttpSessionActivationListener


要使用这些session的监听器,必须建立一个实现这些监听器接口的类,并在web.xml中配置这个类或者在会捆绑到session中的对象中实现监听器接口。


1.   HttpSessionListener :在WEB应用中,当一个session被创建或销毁时启用这个监听器。

       HttpSessionListener接口定义了两个方法:void sessionCreated(HttpSessionEvent se)和void sessionDestroyed(HttpSessionEvent se),每个方法都接受一个HttpSessionEvent对象作为参数。(实现类要提供一个无参数的构造函数)


       官方英文说明:Implementations of this interface are notified of changes to the list of active sessions in a web application. To receive notification events, the implementation class must be configured in the deployment descriptor for the web application.

package com;

public class SessionListener  implements HttpSessionListenter {

           public SessionListener() { }; //无参构造方法

           //当session被创建时执行这个方法

            public void sessionCreated(HttpSessionEvent event) {

                 //代码  

             } 

            //当session被销毁时执行这个方法

            public void sessionDestoryed(HttpSessionEvent event) {

                 //代码  

            } 

            .....................................................

}


2.   HttpSessionAttributeListener :在当前的WEB应用中,当session的attribute被增加、移除或替换后启用这个监听器。

       HttpSessionAttributeListener接口定义了三个方法:void attributeAdded(HttpSessionBindingEvent se) 、void attributeRemoved(HttpSessionBindingEvent se) 和 void attributeReplaced(HttpSessionBindingEvent se) ,每个方法都接受一个HttpSessionBindingEvent对象作为参数。

       官方英文说明:This listener interface can be implemented in order to get notifications of changes to the attribute lists of sessions within this web application.

       具体的实现类定义跟上边的差不多,这里就只写明接口定义的方法在什么情况下将会执行,后面也将是这样带过。

       void attributeAdded(HttpSessionBindingEvent se) ; //当一个attribute被增加到session后执行这个方法

       void attributeRemoved(HttpSessionBindingEvent se);//当一个attribute被从session中移除后执行这个方法

       void attributeReplaced(HttpSessionBindingEvent se);//当一个attribute中的值被替换后执行这个方法

注意上面两个必须在web.xml中配置, 这是为了比较第三个监听器,因为你想使用第三个监听器,那你必须把它布置到准备捆绑到session中的对象,这个对象必须是implements HttpSessionBindingListener


3.    HttpSessionBindingListener:当一个实现了该接口的对象被捆绑到session或从session中被解放的时候启用这个监听器。(不明白的可以查考 类HttpSessionBindingEvent的说明 和HttpSession.setAttribute方法)

       HttpSessionBingdingListener接口定义了两个方法:void valueBound(HttpSessionBindingEvent event)
和 void valueUnbound(HttpSessionBindingEvent event),每个方法都接受一个HttpSessionBindingEvent对象作为参数。

       官方英文说明:Causes an object to be notified when it is bound to or unbound from a session. The object is notified by an HttpSessionBindingEvent object. This may be as a result of a servlet programmer explicitly unbinding an attribute from a session, due to a session being invalidated, or due to a session timing out.

       //当对象被捆绑到session中时执行这个方法,像HttpSession.setAttribute("Aname",this_Object);这个方法执行后,将调用下面的方法,并启用HttpSessionAttributeListener 监听器
       void valueBound( HttpSessionBindingEvent arg2 )

       //当对象从session中被解放时执行这个方法,像HttpSession.setAttribute("Aname",this_Object);执行后,再执行HttpSession.setAttribute("Aname",another_Object);方法 或者HttpSession.setAttribute("Aname",“ ”);方法或者removeAttribute("Aname")后,将调用下面的方法,并启用HttpSessionAttributeListener 监听器
       void valueUnbound( HttpSessionBindingEvent arg1 )




4.    HttpSessionActivationListener :用于分布式服务中,当会话被激活时调用相应的事件。

       HttpSessionActivationListener接口定义了两个方法:void sessionWillPassivate(HttpSessionEvent se) 和 void sessionDidActivate(HttpSessionEvent se),每个方法都接受一个HttpSessionEvent对象作为参数。

       官方英文说明:Objects that are bound to a session may listen to container events notifying them that sessions will be passivated and that session will be activated. A container that migrates session between VMs or persists sessions is required to notify all attributes bound to sessions implementing HttpSessionActivationListener. (说实话,这个我看不懂, 当对象所捆绑着的session将被阻塞或激活的时候,捆绑着这个session的对象可能听从通知它的容器事件。当session在虚拟机之间、或在持久存储设备中移动时,它就会被阻塞或者激活,容器被要求去通知所有捆绑着session并实现HttpSessionActivationListener接口的attribute对象。我是这样翻译的啦,看了的朋友如果觉得有问题,不吝指教)    

       //当session即将被阻塞时执行这个方法

       void sessionWillPassivate(HttpSessionEvent se)

       //当session刚被激活时执行这个方法

       void sessionDidActivate(HttpSessionEvent se)








--------------------------------------------------------------------------------



下面是HttpSessionEvent类的方法

public HttpSession getSession()

HttpSessionBindingEvent类的方法

public HttpSession getSession()

public java.lang.String getName();

public java.lang.Object getValue()

下面是两个类都有的通过继承得到的方法

Methods inherited from class java.util.EventObject
getSource, toString
  Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

分享到:
评论

相关推荐

    web.xml文件中各个标签的介绍

    例如:&lt;session-config&gt;&lt;session-timeout&gt;30&lt;/session-timeout&gt;&lt;/session-config&gt; 11. 错误页面(Error Page) error-page 元素用于指定错误信息输出路径。例如:&lt;error-page&gt;&lt;error-code&gt;404(错误类型)&lt;/error-...

    JSP Web.xml标准配置内容

    WEB.XML标准配置注解: &lt;!--Servlet的映射,用来说明客户端IE中输入什么样的地址字符串对应到哪个Servlet的别名--&gt; &lt;!--在该例中在IE地址栏中... &lt;session-timeout&gt;10&lt;/session-timeout&gt; &lt;/session-config&gt;

    STRUTS:listener监听器

    &lt;listener-class&gt;org.xiosu.listener.onlineListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;/web-app&gt; ``` ##### 3.5 监听器类:onlineListener.java ```java package org.xiosu.listener; import java.util.ArrayList...

    JSF+Spring+Hibernate 配置

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; ``` 5. **示例应用** - 创建一个简单的 JSF 页面,通过 Spring 注入 Hibernate 服务,执行 CRUD 操作:...

    JSP配置文件解释

    Listener配置 监听器(Listener)监听特定的事件,如会话创建、销毁等。`&lt;listener&gt;`元素定义监听器类,例如: ```xml &lt;listener&gt; &lt;listener-class&gt;com.example.SessionListener&lt;/listener-class&gt; &lt;/listener&gt; `...

    web.xml配置详细说明.txt

    `web.xml`文件通常分为三部分:`&lt;web-app&gt;`元素内的全局配置、`&lt;servlet&gt;`元素定义的Servlet和`&lt;servlet-mapping&gt;`元素映射的Servlet。 1. `&lt;web-app&gt;`元素:这是`web.xml`的根元素,包含了所有其他配置。它有一些...

    servlet的xml如何配置

    `&lt;listener&gt;` 元素用于定义事件监听程序类,该类将在建立、修改和删除会话或 servlet 环境时得到通知。 &lt;servlet&gt; 元素 `&lt;servlet&gt;` 元素用于定义 servlet 或 JSP 页面的初始化参数或定制 URL。 &lt;servlet-...

    jsp web.xml文件的作用及基本配置.docx

    - 通过 `&lt;servlet&gt;` 和 `&lt;servlet-mapping&gt;` 元素来进行 Servlet 的配置和映射。 - `&lt;servlet&gt;` 元素用于定义 Servlet 的名称及其实现类。 - `&lt;servlet-mapping&gt;` 元素用于将 Servlet 映射到 URL 上。 - 示例...

    web.xml 文件详解

    `web.xml`文件主要由两部分组成:`&lt;web-app&gt;`元素内的全局配置和`&lt;servlet&gt;`、`&lt;servlet-mapping&gt;`、`&lt;filter&gt;`、`&lt;filter-mapping&gt;`、`&lt;listener&gt;`等元素定义的特定组件配置。 ```xml &lt;web-app&gt; &lt;!-- 全局配置 --...

    使用监听器跟踪session的生命周期和session的属性

    为了更好地理解和管理Session的生命周期及其属性,我们可以使用监听器(Listeners)来实现这一目标。以下是关于使用监听器跟踪Session生命周期和属性的详细解释。 1. **HttpSessionListener**: - `...

    web.xml配置详解

    3. **Listener配置** Listeners监听特定的事件,如会话创建、销毁等。常见的Listener有HttpSessionListener、ServletContextListener等。例如: ```xml &lt;listener&gt; &lt;listener-class&gt;com.example.SessionListener...

    cas 配置client 1.0 &2.0 及proxy DEMO 说明

    &lt;/listener&gt; &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;/web-app&gt; 5 cas client 2.0 proxy 配置说明 proxy web.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web...

    挑战Acegi1.0

    &lt;listener-class&gt;org.acegisecurity.ui.session.HttpSessionEventPublisher&lt;/listener-class&gt; &lt;/listener&gt; ``` 监听器配置主要用于启动时加载Spring上下文、初始化日志配置以及处理会话事件等。 #### 三、Spring...

    用web.xml控制Web应用的行为

    &lt;session-timeout&gt;30&lt;/session-timeout&gt; &lt;/session-config&gt; &lt;error-page&gt; &lt;error-code&gt;404&lt;/error-code&gt; &lt;location&gt;/notfound.jsp&lt;/location&gt; &lt;/error-page&gt; ``` 上述配置表示会话超时时间为30分钟,当发生404...

    XML配置详解

    - **作用**:Servlet API 2.3引入了事件监听器的支持,通过`&lt;listener&gt;`元素可以指定监听器类,这些监听器会在会话建立、修改和销毁时被触发。 - **示例**: ```xml &lt;listener&gt; &lt;listener-class&gt;...

    IDEA SpringMVC集成mybatis

    &lt;sqlSessionFactory type="org.apache.ibatis.session.SqlSessionFactoryBean"&gt; &lt;property name="dataSource" ref="dataSource"/&gt; &lt;property name="mapperLocations" value="classpath:mapper/*.xml"/&gt; &lt;/...

    Web.xml配置文件.pdf

    6. `&lt;listener&gt;`:定义一个监听器,用于监听特定事件(如ServletContext、ServletRequest、ServletResponse的创建和销毁)。例如: ```xml &lt;listener&gt; &lt;listener-class&gt;...

Global site tag (gtag.js) - Google Analytics