`

Web监听器(转)

阅读更多

大量内容来源于:http://www.tuicool.com/articles/bIJJvuE

 

一,前言

1,什么是web监听器?

web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控。

2,监听器常用的用途

通常使用Web监听器做以下的内容:

统计在线人数,利用HttpSessionLisener

加载初始化信息:利用ServletContextListener

统计网站访问量

实现访问监控

3,监听器的分类

    1)按照监听的对象划分:

        ServletContext监控——对应监控application内置对象的创建和销毁。(当web容器开启时,执行contextInitialized方法,当容器关闭或重启时,执行contextDestroyed方法!)

        HttpSession监控——对应监控session内置对象的创建和销毁。(当打开一个新的页面时,开启一个session会话,执行sessionCreated方法;当页面关闭session过期时,或者容器关闭销毁时,执行sessionDestroyed方法!)

        ServletRequest监控——对应监控request内置对象的创建和销毁。(当访问某个页面时,发出一个request请求,执行requestInitialized方法,当页面关闭时,执行requestDestroyed方法!)

    2)按照监听事件划分:

        监听事件自身的创建和销毁——同上面的按对象划分。

        监听属性的新增、删除和修改——按上面的对象划分,ServletContextAttributeListener接口、SessionAttributeListener接口、ServletRequestAttributeListener接口,分别有attributeAdded方法、attributeRemoved方法、attributeReplaced方法需要去实现。

 

二,接下来看看一个监听器的创建以及执行过程

1,首先需要创建一个监听器,实现某种接口,例如我想实现一个对在线人数的监控,可以创建如下的监听器:

public class MyListener implements HttpSessionListener{
private int userNumber = 0;

public void sessionCreated(HttpSessionEvent arg0){
userNumber++;
arg0.getSession().setAttribute("userNumber", userNumber);
}
public void sessionDestroyed(HttpSessionEvent arg0){
userNumber--;
arg0.getSession().setAttribute("userNumber", userNumber);
}
}

然后在web.xml中配置该监听器,在web-app中添加:

<listener>        
  <listener-class>com.test.MyListener</listener-class>
</listener>

在JSP中添加访问人数:

<body>
    在线人数:<%=session.getAttribute("userNumber") %><br/>
</body>

 

2,以下两种情况下就会发生sessionDestoryed(会话销毁)事件:
   1)执行session.invalidate()方法时 
      既然LogoutServlet.java中执行session.invalidate()时,会触发sessionDestory()从在线用户 列表中清除当前用户,我们就不必在LogoutServlet.java中对在线列表进行操作了,所以LogoutServlet.java的内容现在是 这样。

public void doGet(HttpServletRequest request,HttpServletResponse response)  
    throws ServletException, IOException {  
    // 销毁session  
    request.getSession().invalidate();  
    // 成功  
    response.sendRedirect("index.jsp");  
}  

   2)
      如果用户长时间没有访问服务器,超过了会话最大超时时间 ,服务器就会自动销毁超时的session。
      会话超时时间可以在web.xml中进行设置,为了容易看到超时效果,我们将超时时间设置为最小值。

<session-config>  
    <session-timeout>1</session-timeout>  
</session-config>

      时间单位是一分钟,并且只能是整数,如果是零或负数,那么会话就永远不会超时。

 

三,HttpSessionBindingListener方法的使用

1,捕获Session事件的意义:记录网站的客户登录日志(登录,退出信息等!)

 

2,Session代表客户的会话过程,客户登录时,往Session中传入一个对象,即可跟踪客户的会话:

在Servlet中,传入Session的对象如果是一个实现HttpSessionBindingListener接口的对象(方便起见,此对象称为监听器),则在传入的时候(即调用HttpSession对象的setAttribute方法的时候)和移去的时候(即调用HttpSession对象的removeAttribute方法的时候或Session Time out的时候)Session对象会自动调用监听器的valueBound和valueUnbound方法。(由此可知,登录日志也就不难实现了!)

分享到:
评论

相关推荐

    web监听器代码--监听servlet

    Web监听器是Java Web应用程序中的一个重要组件,它们允许开发者在特定事件发生时执行代码,比如在Servlet上下文初始化或销毁时、用户会话创建或结束时等。在Java Web开发中,监听器通过实现特定接口并配置在`web.xml...

    Web监听器

    【标题】:“Web监听器”通常指的是在Web应用程序中用于监控特定事件或状态改变的组件。这类监听器能够帮助开发者捕获用户交互、系统事件或者应用程序内部的状态变化,从而实现相应的处理逻辑。例如,Servlet规范...

    java web使用监听器实现定时周期性执行任务demo

    Java Web 使用监听器实现定时周期性执行任务是一种常见的需求,特别是在服务器端需要定期进行某些维护操作,例如数据备份、清理过期数据或者发送通知。在这个"java web使用监听器实现定时周期性执行任务demo"中,...

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

    在IT行业中,监听器(Listener)和过滤器(Filter)是两种非常重要的组件,它们在Web应用程序中扮演着不可或缺的角色。本文将详细讲解如何利用监听器进行访问计数以及通过过滤器来过滤非法字符,以确保系统的安全性...

    web学习笔记 —— 监听器

    通过以上内容,我们可以了解到Web监听器在开发中的重要作用,从会话管理到系统监控,它们为开发者提供了一种灵活的机制来扩展和定制Web应用程序的行为。在实际工作中,结合源码学习和工具辅助,可以更好地掌握监听器...

    一个简单的监听器案例项目

    总之,这个"一个简单的监听器案例项目"为初学者提供了一个很好的起点,可以帮助他们掌握Java Web监听器的基本用法,并将其应用到自己的项目中。通过深入研究和实践,开发者能够提升对Web应用生命周期管理的理解,...

    servlet监听器案例

    Servlet监听器是Java Web开发中的一个重要概念,它允许开发者在特定的Servlet容器事件发生时执行相应的代码。在本文中,我们将深入探讨Servlet监听器的工作原理、配置和使用,结合具体的"web.xml"配置以及JSP页面的...

    过滤器和监听器的使用与区别

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。本篇文章将详细解释这两种技术的使用、配置及其区别。 首先,我们来了解过滤...

    jsp/servlet中过滤器和监听器的区别

    - **作用对象**:过滤器主要关注请求和响应的处理流程,而监听器则专注于Web应用的生命周期和用户会话事件。 - **处理时机**:过滤器在请求到达Servlet之前和离开Servlet之后进行操作,监听器则是在特定事件发生时...

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

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。以下是关于这两个概念的详细说明。 **过滤器(Filter)** 过滤器是Servlet...

    j2ee20:servlet04监听器(监听四大web域)(用于访问人数的统计)、mvc模式的引入

    在本文中,我们将深入探讨Java EE(J2EE)中的Servlet监听器以及它们在Web应用程序中的作用,特别是在访问人数统计和引入MVC模式方面。首先,让我们了解什么是Servlet监听器。 Servlet监听器是Java Servlet规范的一...

    监听器源代码.zip

    在IT领域,监听器(Listener)是软件设计模式中的一种,广泛应用于事件驱动编程中,尤其是在Java和Web开发中。监听器允许程序订阅特定的事件,以便在这些事件发生时执行相应的操作。在这个名为"监听器源代码.zip"的...

    Java Web监听器Listener接口原理及用法实例

    Java Web监听器Listener接口原理及用法实例 Java Web监听器Listener接口是一种特殊的Java接口,用于监听和响应Web应用程序中的事件。该接口定义在javax.servlet包中,提供了一种机制,使开发者能够监听和响应Web...

    servlet监听器技术源码

    在实际开发中,我们可以通过在`web.xml`部署描述符中配置监听器,或者在Java配置类中使用`@WebListener`注解来注册监听器。这种方式使得代码逻辑与Servlet容器更紧密地结合,增强了程序的可扩展性和维护性。 通过`...

    javaEE监听器

    2. **配置监听器**:然后,在web.xml配置文件中,你需要为监听器类添加相应的配置项,指定当特定事件发生时,应该调用哪个类的方法。 ```xml &lt;web-app&gt; ... &lt;listener-class&gt;com.example监听器类全名 ... &lt;/...

    java监听器和过滤器详解

    监听器在Java Web开发中扮演着非常重要的角色,主要用于监听特定容器事件的发生,比如服务器对象的创建与销毁等,并根据这些事件做出相应的处理。它的工作原理类似于事件驱动模型,其中事件由容器触发,监听器负责...

    监听器实例jsp编写望大家喜欢

    在Java Web开发中,监听器(Listener)是一个重要的组件,它们是Servlet API的一部分,用于监听特定事件并作出响应。在本示例中,“监听器实例jsp编写望大家喜欢”这个项目,显然涉及到如何在JSP(JavaServer Pages...

    servlet 监听器范例

    在Java Web开发中,Servlet监听器(Servlet Listener)扮演着重要的角色,它是Servlet规范的一部分,允许开发者对Web应用程序中的特定事件进行监听和响应。在这个范例中,我们将深入探讨如何利用监听器来统计在线...

    web监听器和过滤器编程编程课后考核练习+答案.zip

    1) 在web.xml中指定监听器类Listener 2) 监听器类Listener实现接口HttpSessionListener,需要重写两个方法 3) 从 HttpSessionEvent获取ServletConText,实现session创建统计在线人数增加 4) 从 HttpSessionEvent获取...

    JAVA SESSION监听器

    总的来说,Java Session监听器是Web应用中不可或缺的一部分,它提供了一种透明且强大的方式来管理和优化Session的生命周期,同时也能帮助我们更好地理解和控制用户的在线行为。通过深入理解和熟练运用Session监听器...

Global site tag (gtag.js) - Google Analytics