`

Servlet 监听器 及实例

    博客分类:
  • j2ee
阅读更多

    在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSession 和 ServletRequest 这三个域对象。

  

    Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。

    监听三个域对象创建和销毁的事件监听器

    监听域对象中属性的增加和删除的事件监听器

    监听绑定到 HttpSession 域中的某个对象的状态的事件监听器。(查看API文档)

 

  (1)ServletContextListener 

     监听servletContext域对象创建和销毁

    ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。

    当 ServletContext 对象被创建时,激发contextInitialized (ServletContextEvent sce)方法

    当 ServletContext 对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

    servletContext域对象何时创建和销毁:

    创建:服务器启动针对每一个web应用创建servletcontext

    销毁:服务器关闭前先关闭代表每一个web应用的servletContext

 

    实例: 当我们系统使用spring框架时,我们要获取bean,在controller里可以通过配置文件直接注入,但是在公共方法(**Utils)里想要获取Service类或DaoImpl实例,

    基本上都要先得到WebApplicationContext对象,要获取WebApplicationContext对象基本上都先要获取ServletContext,

    一般情况下在公共类里不方面获取ServletContext,要使用 WebApplicationContext非常的不方面,这时,我们可以自定义一个ServletContextListener ,

    在创建ServletContext时,创建一个WebApplicationContext,

    然后作为静态变量缓存在公共方法里,用的时候随时都能得到,代码如下:

   

public class SystemContextListener implements ServletContextListener {

    /**
     * 获取一个context
     * @param servletContextEvent
     */
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        ServletCommonUtils.setContext(WebApplicationContextUtils.getWebApplicationContext(servletContextEvent.getServletContext()));
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

   在web.xml配置监听器:

  

<!-- 自定义监听器,用来获取spring的WebApplicationContext -->
    <listener>
        <listener-class>com.intel.store.listener.SystemContextListener</listener-class>
    </listener>

    缓存在公用方法中:

   

public class ServletCommonUtils {

    private static WebApplicationContext context;

    private static Logger logger = LoggerFactory.getLogger(ServletCommonUtils.class);


    public static WebApplicationContext getContext() {
        return context;
    }

    public static void setContext(WebApplicationContext context) {
        ServletCommonUtils.context = context;
    }

}

  

   (2)HttpSessionListener

    监听HttpSession域对象创建和销毁

    HttpSessionListener接口用于监听HttpSession创建和销毁

    创建一个Session时,sessionCreated(HttpSessionEvent se) 方法将会被调用。

    销毁一个Session时,sessionDestroyed (HttpSessionEvent se) 方法将会被调用。

    Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session

    销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失效时间

  经典案例就是统计在线人数(需要在web.xml中配置,此处省略,同上):

 

public class SystemSessionListener implements HttpSessionListener {

    private static long onlineCounter = 0l;

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        onlineCounter++;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        onlineCounter--;
    }

    public static long getOnlineCounter() {
        return onlineCounter;
    }

}

 

  (3)ServletRequestListener

     servletRequest域对象创建和销毁的时机:

     创建:用户每一次访问,都会创建一个reqeust

     销毁:当前访问结束,request对象就会销毁

 

   (4)监听ServletContext, HttpSession, HttpServletRequest对象变化的监听器

      监听三个域对象属性变化

      Servlet规范定义了监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。

      这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener ServletRequestAttributeListener

      这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。

 

     (5)还有一些不常用的监听器:HttpSessionBindingListener, HttpSessionBindingListener  可以参考(http://bbs.csdn.net/topics/190164471)

分享到:
评论
1 楼 sayaliting 2013-11-06  
龙兄,过来看你了,希望你能写出更多优质的帖子,学习中

相关推荐

    Servlet监听器

    Servlet监听器原理,具体使用场景,具体实例

    Servlet对Cookie和Session的管理源码实例

    Servlet对Cookie和Session的管理:会话跟踪、会话浏览、过滤器、事件监听、以及不依赖浏览器的后台跟踪和浏览源码。

    JavaWeb实现网上商城:JSP+Servlet+Dao

    MVC:Model View Controller Model: Dao +JavaBean View: Jsp Controller: Servlet Dao: 用于连接数据库及进行数据库的操作:增、删、改、查等 ...Servlet监听器:给web中的各种操作绑定事件,并对事件进行处理

    java listener监听器教程及实例

    我们在编写JSP/Servle程序时,有相应的事件处理机制,在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。

    可以查看上线人数 监听器 servlet Ajax聊天系统

    可以查看上线人数 监听器 servlet 登出时,session失效。 UserInfoList list=UserInfoList.getInstance();//实例一个用户对象 UserInfoTrace ut=new UserInfoTrace();//实例一个ut String name=(String)session....

    高校学生身体素质管理系统(JSP+Servlet+JavaBean+Dao)

    系统应具有提供学生基本信息的创建、查询、修改、和删除等操作功能,并具有良好的交互性,便于用户的操作使用。...servlet监听器 监听Web的各种操作,当相关的操作触发后将产生的事件,并对此事件进行处理

    Java基于servlet监听器实现在线人数监控功能的方法

    主要介绍了Java基于servlet监听器实现在线人数监控功能的方法,结合实例形式分析了ServletContextListener监听功能的相关使用步骤与操作技巧,需要的朋友可以参考下

    jsp详细教程实例全集

    14文件夹:过滤器(Filter),包括0个实例。对应的WEB-INF\src\mil\zcz\jsp\filter文件夹下包含88个Filter实例。 15文件夹:监听者(Listener),包括7个实例。对应的WEB-INF\src\mil\zcz\jsp\listener文件夹下包含8...

    JavaWeb13-过滤器与监听器.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    《Java Web开发与实战--Eclipse+Tomcat+Servlet+JSP整合应用》.(刘伟,张利国).[PDF].zip

    主要内容包括web应用程序运行原理、主流集成开发工具(eclipse/myeclipse)和运行环境(tomcat)的配置和使用、servlet、jsp、jdbc、jsp表达式语言(el)、servlet监听器和过滤器、定制标记库、jstl、mvc模式、dao...

    Java Web开发与实战:Eclipse+Tomcat+Servlet+JSP整合应用(含光盘源代码)

    主要内容包括web应用程序运行原理、主流集成开发工具(eclipse/myeclipse)和运行环境(tomcat)的配置和使用、servlet、jsp、jdbc、jsp表达式语言(el)、servlet监听器和过滤器、定制标记库、jstl、mvc模式、dao...

    java-servlet-api.doc

    然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的...

    myOnlinesWeb.rar java

    JavaWeb-Servlet技术的监听器-解析与实例-网站在线用户信息与网页点击量 ----------------------------------- JavaWeb-Servlet技术的监听器-解析与实例-网站在线用户信息与网页点击量 ----------------------------...

    Java™ Servlet 规范.

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................

    java范例开发大全

    实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 一年四季的划分 51 第2篇 Java数据处理 第4章 异常处理(教学视频:62分钟) 54 4.1 编译时异常 54 实例35 除0发生的算术异常(ArithmeticException) 54 ...

    JSP监听器用法分析

    本文实例讲述了JSP监听器用法。分享给大家供大家参考,具体如下: 监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会...

    Spring Boot的listener(监听器)简单使用实例详解

    监听器(Listener)的注册方法和 Servlet 一样,有两种方式:代码注册或者注解注册。接下来通过本文给大家介绍Spring Boot的listener(监听器)简单使用,需要的朋友可以参考下

    JavaWeb06-Servlet.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    第7章 过滤器Filter和监听器Listener.ppt

    Java Web基础与实例教程的PPT,自己制作的PPT,将近400页,免费分享,童鞋们努力学习吧。

    Java范例开发大全(全书源程序)

    实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 一年四季的划分 51 第2篇 Java数据处理 第4章 异常处理(教学视频:62分钟) 54 4.1 编译时异常 54 实例35 除0发生的算术异常(ArithmeticException)...

Global site tag (gtag.js) - Google Analytics