Servlet3.0 리스너

9749 단어 경청자서블릿3.0

package com.lee.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * Application Lifecycle Listener implementation class GetConnListener
 * ServletContextListener :用于监听Web应用启动和关闭
 * ServletContextAttributeListener: 用于监听ServletContxt范围(appliaction)内属性的改变
 * 
 * 
 * ServletRequestListener:用于监听用户的请求
 * SerlvetRequestAttributeListener:用于监听ServletReqeust范围(request)内属性的改变
 * 
 * HttpSessionListener:用于监听用户sesion的开始和结束
 * HttpSessionAtributeListener:用于监听HttpSession范围(session)内属性的变化.
 */
@WebListener
public class GetConnListener implements ServletContextListener {

    /**
     * Default constructor. 
     */
    public GetConnListener() {
        // TODO Auto-generated constructor stub
    }

	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    	System.out.println("Web 应用初始化了");
    	
    }

	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    	System.out.println("Web 应用关闭了");
    }
	
}


package com.lee.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.annotation.WebListener;

/**
 * Application Lifecycle Listener implementation class MyServletConnextAtrributeListener
 *
 */
@WebListener
public class MyServletConnextAtrributeListener implements ServletContextAttributeListener {

    /**
     * Default constructor. 
     */
    public MyServletConnextAtrributeListener() {
        // TODO Auto-generated constructor stub
    }

	/**
     * @see ServletContextAttributeListener#attributeAdded(ServletContextAttributeEvent)
     */
    public void attributeAdded(ServletContextAttributeEvent arg0) {
       ServletContext application=arg0.getServletContext();
       String name=arg0.getName();
       Object value=arg0.getValue();
       System.out.println(application+"范围内添加了名为:"+name+",值为"+value+"的属性");
    }

	/**
     * @see ServletContextAttributeListener#attributeReplaced(ServletContextAttributeEvent)
     */
    public void attributeReplaced(ServletContextAttributeEvent arg0) {
    	ServletContext application=arg0.getServletContext();
        String name=arg0.getName();
        Object value=arg0.getValue();
        System.out.println(application+"范围内名为:"+name+",值被替换为"+value+"的属性");
    }

	/**
     * @see ServletContextAttributeListener#attributeRemoved(ServletContextAttributeEvent)
     */
    public void attributeRemoved(ServletContextAttributeEvent arg0) {
    	ServletContext application=arg0.getServletContext();
        String name=arg0.getName();
        Object value=arg0.getValue();
        System.out.println(application+"范围内名为:"+name+",值为"+value+"的被删除了!");
    }
	
}


package com.lee.listener;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * Application Lifecycle Listener implementation class OnLineListener
 *
 */
@WebListener
public class OnLineListener implements HttpSessionListener {

    /**
     * Default constructor. 
     */
    public OnLineListener() {
        // TODO Auto-generated constructor stub
    }

	/**
     * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
     */
    public void sessionCreated(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
    	
    	HttpSession session=arg0.getSession();
    	//获取sessionid
    	String sessionid=session.getId();
    	ServletContext application=session.getServletContext();
    	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 HashMap<String,String>();
    		}
    		online.put(sessionid, user);
    		application.setAttribute("online", online);
    		
    	} 
    		
    	
    }

	/**
     * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
     */
    public void sessionDestroyed(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
    	HttpSession session=arg0.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);
    }
	
}


package com.lee.listener;

import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Application Lifecycle Listener implementation class RequestListenter
 *
 */
@WebListener
public class RequestListenter implements ServletRequestListener, ServletRequestAttributeListener {

    /**
     * Default constructor. 
     */
    public RequestListenter() {
        // TODO Auto-generated constructor stub
    }

	/**
     * @see ServletRequestListener#requestDestroyed(ServletRequestEvent)
     */
    public void requestDestroyed(ServletRequestEvent arg0) {
        // TODO Auto-generated method stub
    	 System.out.println("请求被初始化");
    }

	/**
     * @see ServletRequestAttributeListener#attributeAdded(ServletRequestAttributeEvent)
     */
    public void attributeAdded(ServletRequestAttributeEvent arg0) {
        // TODO Auto-generated method stub
    	ServletRequest request=arg0.getServletRequest();
    	String name=arg0.getName();
    	Object value=arg0.getValue();
    	System.out.println(request+"范围内添加了名为"+name+",值为"+value+"的属性");
    	
    }

	/**
     * @see ServletRequestAttributeListener#attributeRemoved(ServletRequestAttributeEvent)
     */
    public void attributeRemoved(ServletRequestAttributeEvent arg0) {
    	ServletRequest request=arg0.getServletRequest();
    	String name=arg0.getName();
    	Object value=arg0.getValue();
    	System.out.println(request+"范围内删除了名为"+name+",值为"+value+"的属性");
    }

	/**
     * @see ServletRequestAttributeListener#attributeReplaced(ServletRequestAttributeEvent)
     */
    public void attributeReplaced(ServletRequestAttributeEvent arg0) {
    	ServletRequest request=arg0.getServletRequest();
    	String name=arg0.getName();
    	Object value=arg0.getValue();
    	System.out.println(request+"范围内替换了名为"+name+",值为"+value+"的属性");
    }

	/**
     * @see ServletRequestListener#requestInitialized(ServletRequestEvent)
     */
    public void requestInitialized(ServletRequestEvent arg0) {
       HttpServletRequest request=(HttpServletRequest)arg0.getServletRequest();
       HttpSession session =request.getSession();
       String sessionid=session.getId();
       String ip=request.getRemoteAddr();
       String page=request.getRequestURI();
       String user=(String)session.getAttribute("user");
       user=(user==null)?"游客":user;
       try {
		
    	   //将用户登录存入 数据库  通过sessionid 查询.
	    	   
		} catch (Exception e) {
			// TODO: handle exception
		}
    		   
       
       System.out.println("---发出---"+request.getRequestURI()+
    		   "Addr:"+request.getRemoteAddr()+
    		   "Host:"+request.getRemoteHost()+
    		   "Port:"+request.getRemotePort()+
    		   "User:"+request.getRemoteUser()+
    		   "SessionId:"+request.getRequestedSessionId());
       System.out.println("请求被初始化");
    }
	
}

좋은 웹페이지 즐겨찾기