码迷,mamicode.com
首页 > Web开发 > 详细

web.xml监听器 - listener

时间:2019-03-01 12:22:51      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:基础   对象   col   https   跟踪   zed   ESS   ida   ring   

(面向事件编程概念)

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

一、监听器类型 
1.Listener是Servlet的监听器 
2.可以监听客户端的请求、服务端的操作等。 
3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1。 
4.编写监听器需要实现相应的接口 
5.编写完成后在web.xml文件中配置一下,就可以起作用了 
6.可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪

 

二、监听器类型 
按监听的对象(环境对象)划分:

1. 用于监听应用程序环境对象(ServletContext的事件监听器 - application

//ServletContextListener:用于对Servlet整个上下文进行监听(创建、销毁)。
public void contextInitialized(ServletContextEvent sce);//上下文初始化
public void contextDestroyed(ServletContextEvent sce);//上下文销毁
public ServletContext getServletContext();//ServletContextEvent事件:取得一个ServletContext(application)对象

//ServletContextAttributeListener:对Servlet上下文属性的监听(增删改属性)。
public void attributeAdded(ServletContextAttributeEvent scab);//增加属性
public void attributeRemoved(ServletContextAttributeEvent scab);//属性删除
public void attributeRepalced(ServletContextAttributeEvent scab);//属性替换(第二次设置同一属性)
//ServletContextAttributeEvent事件:能取得设置属性的名称与内容
public String getName();//得到属性名称
public Object getValue();//取得属性的值

2. 用于监听用户会话对象(HttpSession Listener)的事件监听器 - session

//HttpSessionListener接口:对Session的整体状态的监听。
public void sessionCreated(HttpSessionEvent se);//session创建
public void sessionDestroyed(HttpSessionEvent se);//session销毁
//HttpSessionEvent事件:
public HttpSession getSession();//取得当前操作的session

//HttpSessionAttributeListener接口:对session的属性监听。
public void attributeAdded(HttpSessionBindingEvent se);//增加属性
public void attributeRemoved(HttpSessionBindingEvent se);//删除属性
public void attributeReplaced(HttpSessionBindingEvent se);//替换属性
//HttpSessionBindingEvent事件:
public String getName();//取得属性的名称
public Object getValue();//取得属性的值
public HttpSession getSession();//取得当前的session
public void invalidate();//使session失效方法 - session.invalidate();

3. 用于监听请求消息对象(ServletRequest Listener)的事件监听器 - request

//ServletRequestListener:用于对Request请求进行监听(创建、销毁)
public void requestInitialized(ServletRequestEvent sre);//request初始化
public void requestDestroyed(ServletRequestEvent sre);//request销毁
//ServletRequestEvent事件:
public ServletRequest getServletRequest();//取得一个ServletRequest对象
public ServletContext getServletContext();//取得一个ServletContext(application)对象

//ServletRequestAttributeListener:对Request属性的监听(增删改属性)。
public void attributeAdded(ServletRequestAttributeEvent srae);//增加属性
public void attributeRemoved(ServletRequestAttributeEvent srae);//属性删除
public void attributeReplaced(ServletRequestAttributeEvent srae);//属性替换(第二次设置同一属性)

//ServletRequestAttributeEvent事件:能取得设置属性的名称与内容
public String getName();//得到属性名称
public Object getValue();//取得属性的值

按监听的事件类项划分

  1. 用于监听域对象自身的创建和销毁的事件监听器

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

  3. 用于监听绑定到HttpSession域中的某个对象的状态的事件监听器

 1 import javax.servlet.ServletContextEvent;    
 2 import javax.servlet.ServletContextListener;    
 3 
 4 public class MyListener implements ServletContextListener {    
 5     public void contextDestroyed(ServletContextEvent sce) {    
 6            System.out.println("die");    
 7     }    
 8 
 9     public void contextInitialized(ServletContextEvent sce) {    
10            System.out.println("init");     
11     }    
12 }
 1 public class HttpSessionListenerImpl implements HttpSessionListener {
 2     public void sessionCreated(HttpSessionEvent event) {
 3         ServletContext app = event.getSession().getServletContext();
 4         int count = Integer.parseInt(app.getAttribute("onLineCount").toString());
 5         count++;
 6         app.setAttribute("onLineCount", count);
 7         int maxOnLineCount = Integer.parseInt(app.getAttribute("maxOnLineCount").toString());
 8         if (count > maxOnLineCount) {
 9             //记录最多人数是多少
10             app.setAttribute("maxOnLineCount", count);
11             DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
12             //记录在那个时刻达到上限
13             app.setAttribute("date", df.format(new Date()));
14         }
15     }
16     //session注销、超时时候调用,停止tomcat不会调用
17     public void sessionDestroyed(HttpSessionEvent event) {
18         ServletContext app = event.getSession().getServletContext();
19         int count = Integer.parseInt(app.getAttribute("onLineCount").toString());
20         count--;
21         app.setAttribute("onLineCount", count);    
22     }
23 }

参考:Listener 监听器

web.xml监听器 - listener

标签:基础   对象   col   https   跟踪   zed   ESS   ida   ring   

原文地址:https://www.cnblogs.com/kiqi/p/10455344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!