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
分享到:
相关推荐
例如:<session-config><session-timeout>30</session-timeout></session-config> 11. 错误页面(Error Page) error-page 元素用于指定错误信息输出路径。例如:<error-page><error-code>404(错误类型)</error-...
WEB.XML标准配置注解: <!--Servlet的映射,用来说明客户端IE中输入什么样的地址字符串对应到哪个Servlet的别名--> <!--在该例中在IE地址栏中... <session-timeout>10</session-timeout> </session-config>
<listener-class>org.xiosu.listener.onlineListener</listener-class> </listener> </web-app> ``` ##### 3.5 监听器类:onlineListener.java ```java package org.xiosu.listener; import java.util.ArrayList...
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ``` 5. **示例应用** - 创建一个简单的 JSF 页面,通过 Spring 注入 Hibernate 服务,执行 CRUD 操作:...
Listener配置 监听器(Listener)监听特定的事件,如会话创建、销毁等。`<listener>`元素定义监听器类,例如: ```xml <listener> <listener-class>com.example.SessionListener</listener-class> </listener> `...
`web.xml`文件通常分为三部分:`<web-app>`元素内的全局配置、`<servlet>`元素定义的Servlet和`<servlet-mapping>`元素映射的Servlet。 1. `<web-app>`元素:这是`web.xml`的根元素,包含了所有其他配置。它有一些...
`<listener>` 元素用于定义事件监听程序类,该类将在建立、修改和删除会话或 servlet 环境时得到通知。 <servlet> 元素 `<servlet>` 元素用于定义 servlet 或 JSP 页面的初始化参数或定制 URL。 <servlet-...
- 通过 `<servlet>` 和 `<servlet-mapping>` 元素来进行 Servlet 的配置和映射。 - `<servlet>` 元素用于定义 Servlet 的名称及其实现类。 - `<servlet-mapping>` 元素用于将 Servlet 映射到 URL 上。 - 示例...
`web.xml`文件主要由两部分组成:`<web-app>`元素内的全局配置和`<servlet>`、`<servlet-mapping>`、`<filter>`、`<filter-mapping>`、`<listener>`等元素定义的特定组件配置。 ```xml <web-app> <!-- 全局配置 --...
为了更好地理解和管理Session的生命周期及其属性,我们可以使用监听器(Listeners)来实现这一目标。以下是关于使用监听器跟踪Session生命周期和属性的详细解释。 1. **HttpSessionListener**: - `...
3. **Listener配置** Listeners监听特定的事件,如会话创建、销毁等。常见的Listener有HttpSessionListener、ServletContextListener等。例如: ```xml <listener> <listener-class>com.example.SessionListener...
</listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 5 cas client 2.0 proxy 配置说明 proxy web.xml <?xml version="1.0" encoding="UTF-8"?> <web...
<listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class> </listener> ``` 监听器配置主要用于启动时加载Spring上下文、初始化日志配置以及处理会话事件等。 #### 三、Spring...
<session-timeout>30</session-timeout> </session-config> <error-page> <error-code>404</error-code> <location>/notfound.jsp</location> </error-page> ``` 上述配置表示会话超时时间为30分钟,当发生404...
- **作用**:Servlet API 2.3引入了事件监听器的支持,通过`<listener>`元素可以指定监听器类,这些监听器会在会话建立、修改和销毁时被触发。 - **示例**: ```xml <listener> <listener-class>...
<sqlSessionFactory type="org.apache.ibatis.session.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </...
6. `<listener>`:定义一个监听器,用于监听特定事件(如ServletContext、ServletRequest、ServletResponse的创建和销毁)。例如: ```xml <listener> <listener-class>...