全局监听类

package sadhu;
import javax.servlet.annotation.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
/**
 监听类
 常用的Web事件监听接口:
 ServletContextListener  监听web应用的启动和关闭
 ServletContextAttributeListener 用于监听ServletContext范围(application)内的属性改变
 ServletRequestListener 用于监听用户的请求
 ServletRquestAttributeListener 用于监听ServletRqeust范围内属性的改变
 HttpSessionListener 用户监听用户session的开始和结束
 HttpSessionAttributeListener 用于监听HttpSession范围内属性的改变
*/
public class MyListener implements ServletContextListener,ServletContextAttributeListener,ServletRequestListener,ServletRequestAttributeListener,HttpSessionListener
{
 /*---- ServletContextListener -----*/
 //应用启动时,该方法被调用
 public void contextInitialized(ServletContextEvent sce)
 {
  System.out.println("Web应用启动");
 }
 //应用销毁时,该方法被调用
 public void contextDestroyed(ServletContextEvent sce)
 {
  System.out.println("Web应用关闭");
 }
 /*---- ServletContextAttributeListener -----*/
 //当程序像application范围添加属性时触发该方法
 public void attributeAdded(ServletContextAttributeEvent event)
 {
  ServletContext application = event.getServletContext();
  String name = event.getName();
  Object value = event.getValue();
  System.out.println(application+"范围内添加了名为"+name+",值为"+value+"的属性!");
 }
 //当application范围内的属性被移出的时候触发该方法
 public void attributeRemoved(ServletContextAttributeEvent event)
 {
  ServletContext application = event.getServletContext();
  String name = event.getName();
  Object value = event.getValue();
  System.out.println(application+"范围内的名为"+name+",值为"+value+"的属性被删除了!");
 }
 //当application范围的属性被替换时触发该方法
 public void attributeReplaced(ServletContextAttributeEvent event)
 {
  ServletContext application = event.getServletContext();
  String name = event.getName();
  Object value = event.getValue();
  System.out.println(application+"范围内名为"+name+",值为"+value+"的属性被替换了!");
 }
 /*---- ServletRequestListener -----*/
 //客户端请求到达,被初始化时
 public void requestInitialized(ServletRequestEvent sre)
 {
  HttpServletRequest request = (HttpServletRequest)sre.getServletRequest();
  System.out.println("----发向"+request.getRequestURI()+"请求被初始化");
 }
 //客户端请求结束,销毁时
 public void requestDestroyed(ServletRequestEvent sre)
 {
  HttpServletRequest request = (HttpServletRequest)sre.getServletRequest();
  System.out.println("----发向"+request.getRequestURI()+"请求被销毁----");
 }
 /*---- ServletRquestAttributeListener -----*/
 //添加request范围内属性时
 public void attributeAdded(ServletRequestAttributeEvent event)
 {
  ServletRequest request = event.getServletRequest();
  String name = event.getName();
  Object value = event.getValue();
  System.out.println(request+"范围内添加了名为"+name+",值为"+value+"的属性!");
 }
 //移出request范围内属性时
 public void attributeRemoved(ServletRequestAttributeEvent event)
 {
  ServletRequest request = event.getServletRequest();
  String name = event.getName();
  Object value = event.getValue();
  System.out.println(request+"范围内的名为"+name+",值为"+value+"的属性被删除了!");
 }
 //替换reqeust范围属性时
 public void attributeReplaced(ServletRequestAttributeEvent event)
 {
  ServletRequest request = event.getServletRequest();
  String name = event.getName();
  Object value = event.getValue();
  System.out.println(request+"范围内名为"+name+",值为"+value+"的属性被替换了!");
 }
 /*---- HttpSessionListener -----*/
 //当用户与服务器之间开始会话时
 public void sessionCreated(HttpSessionEvent se)
 {
  HttpSession session = se.getSession();
  ServletContext application = session.getServletContext();
  String sessionId = session.getId();
  if(session.isNew())
  {
   String user = (String)session.getAttribute("user");
   user = (user == null) ? "游客" : user;
   Map<String,String> online = (Map<String,String>)application.getAttribute("online");
   if(online == null)
   {
    online = new Hashtable<String,String>();
   }
   online.put(sessionId,user);
   application.setAttribute("online",online);
  }
 }
 //当用户与服务器之间结束会话时
 public void sessionDestroyed(HttpSessionEvent se)
 {
  HttpSession session = se.getSession();
  ServletContext application = session.getServletContext();
  String sessionId = session.getId();
  Map<String,String> online = (Map<String,String>)application.getAttribute("online");
  if(online != null)
  {
   online.remove(sessionId);
  }
  application.setAttribute("online",online);
 }
 /*---- HttpSessionAttributeListener -----*/
 
}

你可能感兴趣的:(全局监听类)