`
VerRan
  • 浏览: 457000 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

HttpSessionListener(转)

阅读更多

引自: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

分享到:
评论

相关推荐

    HttpSessionBindingListener获取在线用户数(转)

    在实际应用中,通常会结合`HttpSessionListener`来进一步优化,例如定期清理过期的会话,避免在线用户数出现异常增长。 最后,提到的`OnlineCounter`可能是实现这个功能的一个工具类或模块,它可能包含了对在线用户...

    JSP实现一个网站流量统计器

    `HttpSessionListener`可以监听会话的创建和销毁,而`ServletContextListener`则能监听Web应用的启动和停止。 ### 3. 注册监听器 在`Web.xml`配置文件中,我们需要注册这两个监听器。`HttpSessionListener`用于...

    Java可以监听客户端的请求、服务端的操作等。

    这里主要涉及到了Java Web应用中的监听器,尤其是`HttpSessionListener`和`HttpSessionAttributeListener`。 ### 标题解析:Java可以监听客户端的请求、服务端的操作等 这个标题明确指出了Java可以通过特定的机制...

    杂记(一):Listener、Filter和工具

    常见的Listener包括HttpSessionListener、ServletContextListener和ServletRequestListener等。例如,HttpSessionListener可以用来监听session的创建和销毁,帮助开发者管理会话状态,控制资源分配;而...

    ServletTest.rar

    常见的监听器包括HttpSessionListener、ServletRequestListener、ServletContextListener等。例如,HttpSessionListener可以监控会话的创建和销毁,帮助管理会话状态。在"ServletTest"中,你可能会发现实现了这些...

    java开始面试的第60天.doc

    在提供的代码示例中,`CountListener`类实现了`HttpSessionListener`接口,当一个session被创建时,`sessionCreated()`方法会被调用,增加计数器;当session被销毁时,`sessionDestroyed()`方法执行,减少计数器。这...

    Servlet过滤器与监听器.doc

    监听器通过实现Servlet规范定义的接口,如`HttpSessionListener`、`ServletRequestListener`等,可以在事件发生时自动执行代码,提高程序的自动化程度和响应速度。 监听器的应用场景包括: 1. 监控在线用户数量,...

    JSP+Servlet选择题.doc

    13. 与`HttpSessionListener`接口相关的方法:`HttpSessionListener`接口包含`sessionCreated()`和`sessionDestroyed()`方法,用于监听会话的创建和销毁。所以正确答案是B、D。 14. 不是`Filter`接口的方法:`...

    Java进阶-Filter&amp;Listener&amp;Ajax&amp;Json(十五).zip

    在Servlet环境中,常见的监听器有HttpSessionListener、ServletRequestListener、ServletContextListener等。例如,当用户会话开始或结束时,HttpSessionListener可以用来处理相关的逻辑,如清理资源、更新统计信息...

    listener和filter 监听器和过滤器的介绍以及简单使用(csdn)————程序.pdf

    - **第一类**:创建和销毁监听器,包括ServletContextListener、HttpSessionListener和ServletRequestListener,分别对应ServletContext、HttpSession和ServletRequest对象的生命周期事件。 - **第二类**:属性...

    model2+监听+过滤器

    例如,`HttpSessionListener`可以监听用户的会话开始和结束,`ServletRequestListener`则可以监听请求的初始化和完成。在描述中的"登录在线用户统计"场景中,监听器可能被用来跟踪何时用户登录和登出,从而更新在线...

    JavaWeb两大组件FILTER&LISTENER

    1. 实现监听器接口:例如,如果你想监听会话的创建和销毁,可以创建一个类实现HttpSessionListener接口,重写sessionCreated()和sessionDestroyed()方法。 2. 注册监听器:同样地,需要在web.xml中配置监听器。通过...

    Jsp.rar_jsp

    常见的监听器包括HttpSessionListener、ServletRequestListener、ServletContextListener等,开发者可以通过实现这些接口来定制自己的监听逻辑。 【Servlet】 Servlet是Java Web开发的核心,它是服务器端的Java应用...

    一个java程序员的经验总结

    2. **HttpSessionListener**:监听`HttpSession`的创建和销毁。 3. **ServletRequestListener**:监听每个请求的创建和销毁。 #### 九、字符集编码统一 通过动态代理可以实现网站字符集编码的统一处理,通常利用...

    JSP动态网页设计:第6章 过滤器与监听器.ppt

    监听器可以通过实现对应的监听器接口(如`ServletContextListener`、`HttpSessionListener`、`ServletRequestListener`等)来进行注册,并在事件发生时触发相应的回调方法。 总之,过滤器和监听器是JSP开发中的两个...

    关于过滤器和监听器的使用模板

    1. **HttpSessionListener**:监听session的创建和销毁事件。 2. **ServletRequestListener**:监听请求的初始化和完成。 3. **ServletContextListener**:监听应用的启动和关闭,常用于初始化全局变量或资源。 4. *...

    监听器访问计数过滤非法字符

    在"监听器访问计数"的场景下,我们通常会使用HttpSessionListener或者HttpSessionAttributeListener来实现在线人数的统计。例如,当一个用户打开一个Web页面时,创建一个新的会话,监听器会接收到这个事件并增加在线...

    tomcat+nginx+redis 实现sessionId共享 实例

    在Tomcat的web.xml中,配置`HttpSessionListener`和`SessionRepositoryFilter`来启用Redis存储。 3. **配置Nginx**:在Nginx的配置文件中,设置反向代理规则,确保所有来自客户端的请求都被正确地转发到后端的...

    过滤器filter和监听器listener的应用总结

    - `HttpSessionListener`:监听Session的创建和销毁。 - `HttpSessionAttributeListener`:监听Session属性的添加、移除和替换。 - `ServletContextListener`:监听Web应用的初始化和销毁。 3. **监听器接口**:...

    servlet中的过滤器与监听器

    监听器通过实现不同的接口,如`ServletContextListener`, `HttpSessionListener`, `ServletRequestListener`等来响应这些事件。 **常见监听器类型**: 1. `ServletContextListener`: 监听应用的启动和关闭,常用于...

Global site tag (gtag.js) - Google Analytics