引自:http://hi.baidu.com/znn1980/blog/item/1517987ea2df3e3a0cd7da02.html
在理解这个接口之前,先提出一个问题,就是假设我的web应用上想知道到底有多少用户在使用?
首先看一段代码。
package demo.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCounter implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
ServletContext ctx = event.getSession( ).getServletContext( );
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(1);
}
else {
int count = numSessions.intValue( );
numSessions = new Integer(count + 1);
}
ctx.setAttribute("numSessions", numSessions);
}
public void sessionDestroyed(HttpSessionEvent event) {
ServletContext ctx = event.getSession( ).getServletContext( );
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(0);
}
else {
int count = numSessions.intValue( );
numSessions = new Integer(count - 1);
}
ctx.setAttribute("numSessions", numSessions);
}
}
在这个解决方案中,任何一个Session被创建或者销毁时,都会通知SessionCounter 这个类,当然通知的原因是必须在web.xml文件中做相关的配置工作。如下面的配置代码:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Struts Examples</display-name>
<listener>
<listener-class>demo.listener.SessionCounter</listener-class>
</listener>
... rest of web.xml
分享到:
相关推荐
在实际应用中,通常会结合`HttpSessionListener`来进一步优化,例如定期清理过期的会话,避免在线用户数出现异常增长。 最后,提到的`OnlineCounter`可能是实现这个功能的一个工具类或模块,它可能包含了对在线用户...
`HttpSessionListener`可以监听会话的创建和销毁,而`ServletContextListener`则能监听Web应用的启动和停止。 ### 3. 注册监听器 在`Web.xml`配置文件中,我们需要注册这两个监听器。`HttpSessionListener`用于...
这里主要涉及到了Java Web应用中的监听器,尤其是`HttpSessionListener`和`HttpSessionAttributeListener`。 ### 标题解析:Java可以监听客户端的请求、服务端的操作等 这个标题明确指出了Java可以通过特定的机制...
常见的Listener包括HttpSessionListener、ServletContextListener和ServletRequestListener等。例如,HttpSessionListener可以用来监听session的创建和销毁,帮助开发者管理会话状态,控制资源分配;而...
常见的监听器包括HttpSessionListener、ServletRequestListener、ServletContextListener等。例如,HttpSessionListener可以监控会话的创建和销毁,帮助管理会话状态。在"ServletTest"中,你可能会发现实现了这些...
在提供的代码示例中,`CountListener`类实现了`HttpSessionListener`接口,当一个session被创建时,`sessionCreated()`方法会被调用,增加计数器;当session被销毁时,`sessionDestroyed()`方法执行,减少计数器。这...
监听器通过实现Servlet规范定义的接口,如`HttpSessionListener`、`ServletRequestListener`等,可以在事件发生时自动执行代码,提高程序的自动化程度和响应速度。 监听器的应用场景包括: 1. 监控在线用户数量,...
13. 与`HttpSessionListener`接口相关的方法:`HttpSessionListener`接口包含`sessionCreated()`和`sessionDestroyed()`方法,用于监听会话的创建和销毁。所以正确答案是B、D。 14. 不是`Filter`接口的方法:`...
在Servlet环境中,常见的监听器有HttpSessionListener、ServletRequestListener、ServletContextListener等。例如,当用户会话开始或结束时,HttpSessionListener可以用来处理相关的逻辑,如清理资源、更新统计信息...
- **第一类**:创建和销毁监听器,包括ServletContextListener、HttpSessionListener和ServletRequestListener,分别对应ServletContext、HttpSession和ServletRequest对象的生命周期事件。 - **第二类**:属性...
例如,`HttpSessionListener`可以监听用户的会话开始和结束,`ServletRequestListener`则可以监听请求的初始化和完成。在描述中的"登录在线用户统计"场景中,监听器可能被用来跟踪何时用户登录和登出,从而更新在线...
1. 实现监听器接口:例如,如果你想监听会话的创建和销毁,可以创建一个类实现HttpSessionListener接口,重写sessionCreated()和sessionDestroyed()方法。 2. 注册监听器:同样地,需要在web.xml中配置监听器。通过...
常见的监听器包括HttpSessionListener、ServletRequestListener、ServletContextListener等,开发者可以通过实现这些接口来定制自己的监听逻辑。 【Servlet】 Servlet是Java Web开发的核心,它是服务器端的Java应用...
2. **HttpSessionListener**:监听`HttpSession`的创建和销毁。 3. **ServletRequestListener**:监听每个请求的创建和销毁。 #### 九、字符集编码统一 通过动态代理可以实现网站字符集编码的统一处理,通常利用...
监听器可以通过实现对应的监听器接口(如`ServletContextListener`、`HttpSessionListener`、`ServletRequestListener`等)来进行注册,并在事件发生时触发相应的回调方法。 总之,过滤器和监听器是JSP开发中的两个...
1. **HttpSessionListener**:监听session的创建和销毁事件。 2. **ServletRequestListener**:监听请求的初始化和完成。 3. **ServletContextListener**:监听应用的启动和关闭,常用于初始化全局变量或资源。 4. *...
在"监听器访问计数"的场景下,我们通常会使用HttpSessionListener或者HttpSessionAttributeListener来实现在线人数的统计。例如,当一个用户打开一个Web页面时,创建一个新的会话,监听器会接收到这个事件并增加在线...
在Tomcat的web.xml中,配置`HttpSessionListener`和`SessionRepositoryFilter`来启用Redis存储。 3. **配置Nginx**:在Nginx的配置文件中,设置反向代理规则,确保所有来自客户端的请求都被正确地转发到后端的...
- `HttpSessionListener`:监听Session的创建和销毁。 - `HttpSessionAttributeListener`:监听Session属性的添加、移除和替换。 - `ServletContextListener`:监听Web应用的初始化和销毁。 3. **监听器接口**:...
监听器通过实现不同的接口,如`ServletContextListener`, `HttpSessionListener`, `ServletRequestListener`等来响应这些事件。 **常见监听器类型**: 1. `ServletContextListener`: 监听应用的启动和关闭,常用于...