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

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+IBatis+BootStrip技术构建简单会议管理系统

    第04课 servlet3.0新特性之@WebFilter_@WebListener 第05课 JQuery AJAX 注册验证+二级菜单(JSON) 第06课 mybatis 框架搭建 第07课 mybatis 增删改查 第08课 mybatis 动态sql 第09课 bootstrap的搭建+栅格系统+...

    annotaction

    2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声 明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。 3. 可插性支持:熟悉 Struts2 的开发者一定...

    SpringBoot如何注册Servlet、Filter、Listener的几种方式

    在Servlet 3.0之前都是使用web.xml文件进行配置,这篇文章主要介绍了SpringBoot如何注册Servlet、Filter、Listener的几种方式,在Servlet 3.0之前都是使用web.xml文件进行配置,

    spring mvc项目

    spring mvc maven项目,导入IDEA后无报错,需要在IDEA中...该项目使用servlet3.0规范,无web.xml,无spring.xml等配置文件,所有的配置均通过Java Config、注解搞定,项目中还集成了log4j2技术,以及前端html文件等。

    springweb3.0MVC注解(附实例)

    -- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的 配置文件, 以启动Spring MVC模块--&gt; &lt;servlet&gt; &lt;servlet-name&gt;annomvc&lt;/servlet-name&gt; &lt;servlet-class&gt; org.springframework.web.servlet....

    JDBC 3.0数据库开发与设计

    3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 3.3.1 获取数据库详细信息 3.3.2 获取数据库基本信息 3.3.3 获取数据库中表的信息 3.3.4 获取表中各列的信息 3.3.5 获取索引的信息 ...

    springLean:spring注解驱动开及源码分析

    spring注解驱动开及源码分析 目录 ...2,生命周期 3,属性赋值 4,自动装配 5,IOC小结 6,AOP源码分析 ...10.4-Servlet3.0与SpringMVC整合分析 11,SpringMVC 11.1-整合 11.2-定制与接管SpringMVC 11.3-servlet

    使用FormData进行Ajax请求上传文件的实例代码

    Servlet3.0开始提供了一系列的注解来配置Servlet、Filter、Listener等等。这种方式可以极大的简化在开发中大量的xml的配置。从这个版本开始,web.xml可以不再需要,使用相关的注解同样可以完成相应的配置。 a.选中...

    Java™ Servlet 规范.

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................

    看透springMvc源代码分析与实践

    22.1.1 Servlet 3.0处理异步请求实例282 22.1.2 异步请求监听器Async-Listener284 22.2 Spring MVC中的异步请求286 22.2.1 Spring MVC中异步请求相关组件286 22.2.2 Spring MVC对异步请求的支持297 22.2.3 ...

    java8源码-LearnSpring:学习springboot

    servlet3.0 版本新增若干注解,使得 Servlet, Filter, Listener 可以不必声明在 xml 中,而是可以以类加注解的形式出现,这样 web.xml 就不是必须的了。 一是 WebApplicationInitializer 这个类,做了很多 web 容器...

    Servlet3.1规范(最终版) PDF

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 ...............................................

    通俗易懂的Spring注解驱动开发教程(含配套资料)

    本教程为授权出品教程 《Spring注解驱动开发》是一套帮助我们深入了解Spring原理... 3).web原理 1).Servlet3.0标准新增特性 2).异步请求相关 本视频使用了maven构建程序,需要同学们有对Spring.SpringMVC的基本

    springboot学习思维笔记.xmind

    Servlet3.0+异步方法处理 Spring MVC的测试 MockMVC MockHttpServlerRequest MockHttpServletResponse MockHttpSession SpringBoot基础 SpringBoot概述 什么是SpringBoot SpringBoot核心...

    基于MyEclipse搭建maven+springmvc整合图文教程(含源码0

    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;param-name&gt;contextConfigLocation &lt;param-value&gt;/WEB-INF/dispatcher-servlet.xml &lt;load-on-startup&gt;1 &lt;/...

    spring_MVC源码

    本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...

    Java优化编程(第2版)

    7.2.4 filter servlet与listener servlet 小结 第8章 开发高性能的ejb应用 8.1 采用ejb技术的必要性 8.1.1 ejb技术的优势特性 8.1.2 ejb技术体系具有清晰的架构层次 8.1.3 ejb与传统bean相比的性能优势 8.2 ejb的...

    springmybatis

    DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt; &lt;typeAliases&gt; &lt;typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/&gt; ...

    ssh对lob完美处理

    structs1.2 spring2.5 hibernate3.0 java web 对clob大文本 blob图像处理 这是一个完整的例子,整合了ckeidtor,servlet直接显示数据库blob图片, 注意oracle驱动ojdbc14.jar,如果是其他驱动例如ojdbc14_*g都是不...

Global site tag (gtag.js) - Google Analytics