web 监听器

来源:互联网 发布:在线网络北京时间 编辑:程序博客网 时间:2024/05/02 02:50
1 、监听器的介绍

         Web服务器上有4个范围,抛开page范围,还有request范围,session范围,application范围。这些范围的对象什么时候创建,什么时候销毁,什么时候往范围中存放了数据,什么时候替换了存放的数据,都可以使用监听器来监听到。

         监听器是一个实现特定接口的普通Java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即执行。

2、Servlet监听器

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

    Servlet API提供了8个监听器接口,他们分别是:

   ●  ServletContextListener:应用上下文生命周期监听器。用于监听ServletContext对象的创建和销毁。

   ●  ServletContextAttributeListener:应用上下文属性事件监听器。用于监听WEB应用上下文中的属性改变的事件。

   ●  ServletRequestListener:请求生命周期监听器。用于监听请求的创建和销毁事件。

   ●  ServletRequestAttributeListener:请求属性事件监听器。用于监听请求中的属性改变的事件。

   ●  HttpSessionListener:会话生命周期监听器。用于监听会话的创建和销毁时间。

   ●  HttpSessionActivationListenerListener:会话激活和钝化事件监听器。用于监听会话的激活和钝化的事件。

   ●  HttpSessionAttributeListener:会话属性事件监听器。用于监听会话中的属性改变的事件。

   ●  HttpSessionBindingListener:会话绑定事件监听器。这是唯一不需要在web.xml中设定的Listener。

         每个监听器接口中都定义了一些回调方法,当对应的事件发生前或发生后,WEB容器会自动调用对应监听器实现类中的相应方法。

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

3、监听servletContext域对象创建和销毁

  ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。
下面我们来举个例子来说明:
编写 一个MyServletContextListener类实现ServletContextListener接口,具体代码如下:
public class MyServletContextListener implements ServletContextListener {
 
 public void contextDestroyed(ServletContextEvent arg0) {
  System.out.println(arg0.getSource() + "被销毁了");
  
 }

 public void contextInitialized(ServletContextEvent arg0) {
  System.out.println(arg0.getSource() + "被创建了");
    
 }
}

 然后在web.xml中注册监听器

 <listener>
    <listener-class>cn.csdn.web.listener.MyServletContextListener</listener-class>
  </listener>

 2、监听HttpSession域对象创建和销毁

     HttpSessionListener接口用于监听HttpSession的创建和销毁
      创建一个Session时,sessionCreated(HttpSessionEvent se) 方法将会被调用。
     销毁一个Session时,sessionDestroyed (HttpSessionEvent se) 方法将会被调用
  下面我们来举个例子来说明:
  编写 一个MyHttpSessionListener类实现HttpSessionListener接口,具体代码如下:  
public class MyHttpSessionListener implements HttpSessionListener {

 public void sessionCreated(HttpSessionEvent arg0) {
  System.out.println("session对象" + arg0.getSession() + "被创建了");

 }

 public void sessionDestroyed(HttpSessionEvent arg0) {
  System.out.println("session对象"+ arg0.getSession() + "被销毁了");
 }

}

然后在web.xml中注册监听器

 <listener>
    <listener-class>cn.csdn.web.listener.MyHttpSessionListener</listener-class>
  </listener>

3、监听HttpRequest域对象创建和销毁

  ServletRequestListener 接口用于监听ServletRequest 对象的创建和销毁。 
  Request 对象被创建时,监听器的requestInitialized方法将会被调用。
  Request对象被销毁时,监听器的requestDestroyed方法将会被调用。

下面我们来举个例子来说明:
  编写 一个MyServletRequestListener类实现ServletRequestListener接口,具体代码如下:
public void requestDestroyed(ServletRequestEvent arg0) {
  System.out.println("request对象"+arg0.getServletRequest()+"被创建了");

 }

 public void requestInitialized(ServletRequestEvent arg0) {
  System.out.println("request对象"+arg0.getServletRequest()+"被销毁了");

 }

}

然后在web.xml中注册监听器

 <listener>
    <listener-class>cn.csdn.web.listener.MyServletRequestListener</listener-class>
  </listener>

转自:http://blog.csdn.net/xunfeng321/article/details/8504249

0 0
原创粉丝点击