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("请求被初始化");
}
}
分享到:
相关推荐
第04课 servlet3.0新特性之@WebFilter_@WebListener 第05课 JQuery AJAX 注册验证+二级菜单(JSON) 第06课 mybatis 框架搭建 第07课 mybatis 增删改查 第08课 mybatis 动态sql 第09课 bootstrap的搭建+栅格系统+...
2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声 明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。 3. 可插性支持:熟悉 Struts2 的开发者一定...
在Servlet 3.0之前都是使用web.xml文件进行配置,这篇文章主要介绍了SpringBoot如何注册Servlet、Filter、Listener的几种方式,在Servlet 3.0之前都是使用web.xml文件进行配置,
spring mvc maven项目,导入IDEA后无报错,需要在IDEA中...该项目使用servlet3.0规范,无web.xml,无spring.xml等配置文件,所有的配置均通过Java Config、注解搞定,项目中还集成了log4j2技术,以及前端html文件等。
-- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的 配置文件, 以启动Spring MVC模块--> <servlet> <servlet-name>annomvc</servlet-name> <servlet-class> org.springframework.web.servlet....
3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 3.3.1 获取数据库详细信息 3.3.2 获取数据库基本信息 3.3.3 获取数据库中表的信息 3.3.4 获取表中各列的信息 3.3.5 获取索引的信息 ...
spring注解驱动开及源码分析 目录 ...2,生命周期 3,属性赋值 4,自动装配 5,IOC小结 6,AOP源码分析 ...10.4-Servlet3.0与SpringMVC整合分析 11,SpringMVC 11.1-整合 11.2-定制与接管SpringMVC 11.3-servlet
Servlet3.0开始提供了一系列的注解来配置Servlet、Filter、Listener等等。这种方式可以极大的简化在开发中大量的xml的配置。从这个版本开始,web.xml可以不再需要,使用相关的注解同样可以完成相应的配置。 a.选中...
1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................
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 ...
servlet3.0 版本新增若干注解,使得 Servlet, Filter, Listener 可以不必声明在 xml 中,而是可以以类加注解的形式出现,这样 web.xml 就不是必须的了。 一是 WebApplicationInitializer 这个类,做了很多 web 容器...
1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 ...............................................
本教程为授权出品教程 《Spring注解驱动开发》是一套帮助我们深入了解Spring原理... 3).web原理 1).Servlet3.0标准新增特性 2).异步请求相关 本视频使用了maven构建程序,需要同学们有对Spring.SpringMVC的基本
Servlet3.0+异步方法处理 Spring MVC的测试 MockMVC MockHttpServlerRequest MockHttpServletResponse MockHttpSession SpringBoot基础 SpringBoot概述 什么是SpringBoot SpringBoot核心...
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <param-name>contextConfigLocation <param-value>/WEB-INF/dispatcher-servlet.xml <load-on-startup>1 </...
本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。 先说...
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的...
DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <typeAliases> <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> ...
structs1.2 spring2.5 hibernate3.0 java web 对clob大文本 blob图像处理 这是一个完整的例子,整合了ckeidtor,servlet直接显示数据库blob图片, 注意oracle驱动ojdbc14.jar,如果是其他驱动例如ojdbc14_*g都是不...