欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Servlet3.0 Listener

程序员文章站 2022-07-02 09:59:13
...
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("请求被初始化");
    }
	
}
相关标签: Servlet3.0 Listener