`
Luob.
  • 浏览: 1588639 次
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet3.0 Listener

    博客分类:
  • JSP
阅读更多
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参考手册

    Servlet3.0引入了注解,允许开发者直接在类或方法上使用`@WebServlet`、`@WebFilter`和`@WebListener`注解来声明它们,使得代码更加简洁,也更易于维护。 其次,Servlet3.0引入了异步处理能力。通过实现`...

    servlet3.0.jar下载

    1. **注解驱动的配置**:在Servlet 3.0中,开发者可以使用注解(如`@WebServlet`, `@WebFilter`, `@WebListener`)来声明和配置Servlet、Filter和Listener,而不再需要在web.xml中进行繁琐的手动配置。这使得部署...

    servlet 3.0 jar 包综合下载

    下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...

    servlet3.0 jar包和doc

    1. **注解驱动的配置**:Servlet3.0引入了注解(Annotation),使得开发者可以在类或方法级别直接声明Servlet、Filter和Listener,无需在web.xml中进行繁琐的手动配置。例如,你可以使用`@WebServlet`、`@WebFilter`...

    servlet3.0.zip

    这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...

    Jsp/Servlet3.0 ppt和代码

    【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...

    maven servlet 3.0 eclipse config video

    【标题】"maven servlet 3.0 eclipse config video" 提供的是关于如何在Eclipse集成开发环境中配置Maven和Servlet 3.0的视频教程。这个教程旨在帮助开发者了解和掌握如何有效地利用Maven构建Java Web项目,并利用...

    servlet3.0 规范pdf 包含javadoc

    2. **注解驱动的配置**:相比于之前的版本,Servlet 3.0允许使用注解来配置Servlet、Filter和Listener,无需在web.xml中进行繁琐的XML配置。例如,`@WebServlet`、`@WebFilter`和`@WebListener`注解分别用于声明...

    Servlet3.0特性详解

    在Servlet3.0中,我们可以使用注解(@WebServlet、@WebFilter、@WebListener)来替代web.xml中的XML配置,使得部署更简洁。例如,`@WebServlet("/example")`可以直接在Servlet类上声明URL映射。 2. **异步处理**:...

    Servlet3.0新特性解析

    而Servlet3.0则引入了注解驱动的监听器注册,开发者可以直接在类上使用`@WebListener`注解来声明监听器,无需再依赖web.xml。这使得监听器的定义更加简洁,也更易于管理和维护。 例如,我们可以创建一个监听...

    servlet 3.0新增功能详解

    Servlet 3.0 还增加了对注解的支持,这为简化 Servlet、过滤器(Filter)和监听器(Listener)的声明提供了便利。在之前的版本中,Servlet、过滤器和监听器都需要在 web.xml 文件中进行声明式配置,而在 Servlet 3.0 中...

    Servlet 3.0 - Apache Tomcat 7.0.61

    1. 注解支持:Servlet 3.0引入了注解(Annotation)来声明Servlet、Filter和Listener,避免了XML配置文件的繁琐。例如,`@WebServlet`、`@WebFilter`和`@WebListener`可以直接在类上声明,简化了部署过程。 2. 异步...

    servlet3.0

    在Servlet 3.0中,开发者可以通过注解(@WebServlet、@WebFilter、@WebListener)来声明Servlet、Filter和Listener,无需再在web.xml中进行繁琐的XML配置。这简化了部署描述符的编写,提高了代码的可读性和可维护性。...

    Servlet3.0 新特性

    在Servlet3.0之前,我们通常通过web.xml文件来配置Servlet、Filter和Listener。Servlet3.0引入了注解支持,允许开发者直接在类上声明这些组件,例如`@WebServlet`、`@WebFilter`和`@WebListener`,简化了部署描述符...

    Servlet3.0 Demo

    类似于Servlet,Servlet3.0也允许通过注解来注册监听器,如`@WebListener`,这样可以更方便地创建和管理监听器。 4. **Pluggable Servlet Container初始化**: Servlet3.0引入了可插拔的Servlet容器初始化,使得...

    Servlet3.0

    Servlet3.0是Java EE平台中的一个重要里程碑,它在Servlet规范上引入了许多创新特性,极大地提高了Web应用的开发效率和性能。在这个版本中,重点强调了异步处理和反向Ajax的支持,这两个特性使得Web应用能够更加高效...

    servlet3.0 jar \ doc \pdf 相关文档资料

    类似于Servlet的注册方式,Servlet 3.0也支持在监听器类上使用`@WebListener`注解,无需在web.xml中声明。 4. **过滤器链的改进**: 过滤器可以使用`@WebFilter`注解来定义,同时支持通过注解配置过滤器的URL模式...

    Servlet 3.0 API - Apache Tomcat 7.0.41

    3. **注解配置**:Servlet 3.0引入了注解配置,开发者可以直接在Servlet、Filter或Listener类上使用注解,而无需在web.xml文件中进行繁琐的XML配置。例如,`@WebServlet`, `@WebFilter`, 和 `@WebListener` 分别用于...

    官方servlet3.0.rar

    例如,我们可以通过`@WebServlet`, `@WebFilter`和`@WebListener`注解直接在类级别定义它们,简化了部署描述符(web.xml)的维护。 2. **异步处理(Asynchronous Processing)** 该版本引入了异步Servlet,允许...

    servlet3.0文档html

    1. **注解配置**:Servlet 3.0引入了注解配置,允许开发者直接在类或方法上使用注解(@WebServlet, @WebFilter, @WebListener)来声明Servlet、Filter和Listener,不再需要web.xml文件进行硬编码。这大大简化了部署...

Global site tag (gtag.js) - Google Analytics