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引入了注解,允许开发者直接在类或方法上使用`@WebServlet`、`@WebFilter`和`@WebListener`注解来声明它们,使得代码更加简洁,也更易于维护。 其次,Servlet3.0引入了异步处理能力。通过实现`...
1. **注解驱动的配置**:在Servlet 3.0中,开发者可以使用注解(如`@WebServlet`, `@WebFilter`, `@WebListener`)来声明和配置Servlet、Filter和Listener,而不再需要在web.xml中进行繁琐的手动配置。这使得部署...
下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...
1. **注解驱动的配置**:Servlet3.0引入了注解(Annotation),使得开发者可以在类或方法级别直接声明Servlet、Filter和Listener,无需在web.xml中进行繁琐的手动配置。例如,你可以使用`@WebServlet`、`@WebFilter`...
这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...
【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...
【标题】"maven servlet 3.0 eclipse config video" 提供的是关于如何在Eclipse集成开发环境中配置Maven和Servlet 3.0的视频教程。这个教程旨在帮助开发者了解和掌握如何有效地利用Maven构建Java Web项目,并利用...
2. **注解驱动的配置**:相比于之前的版本,Servlet 3.0允许使用注解来配置Servlet、Filter和Listener,无需在web.xml中进行繁琐的XML配置。例如,`@WebServlet`、`@WebFilter`和`@WebListener`注解分别用于声明...
在Servlet3.0中,我们可以使用注解(@WebServlet、@WebFilter、@WebListener)来替代web.xml中的XML配置,使得部署更简洁。例如,`@WebServlet("/example")`可以直接在Servlet类上声明URL映射。 2. **异步处理**:...
而Servlet3.0则引入了注解驱动的监听器注册,开发者可以直接在类上使用`@WebListener`注解来声明监听器,无需再依赖web.xml。这使得监听器的定义更加简洁,也更易于管理和维护。 例如,我们可以创建一个监听...
Servlet 3.0 还增加了对注解的支持,这为简化 Servlet、过滤器(Filter)和监听器(Listener)的声明提供了便利。在之前的版本中,Servlet、过滤器和监听器都需要在 web.xml 文件中进行声明式配置,而在 Servlet 3.0 中...
1. 注解支持:Servlet 3.0引入了注解(Annotation)来声明Servlet、Filter和Listener,避免了XML配置文件的繁琐。例如,`@WebServlet`、`@WebFilter`和`@WebListener`可以直接在类上声明,简化了部署过程。 2. 异步...
在Servlet 3.0中,开发者可以通过注解(@WebServlet、@WebFilter、@WebListener)来声明Servlet、Filter和Listener,无需再在web.xml中进行繁琐的XML配置。这简化了部署描述符的编写,提高了代码的可读性和可维护性。...
在Servlet3.0之前,我们通常通过web.xml文件来配置Servlet、Filter和Listener。Servlet3.0引入了注解支持,允许开发者直接在类上声明这些组件,例如`@WebServlet`、`@WebFilter`和`@WebListener`,简化了部署描述符...
类似于Servlet,Servlet3.0也允许通过注解来注册监听器,如`@WebListener`,这样可以更方便地创建和管理监听器。 4. **Pluggable Servlet Container初始化**: Servlet3.0引入了可插拔的Servlet容器初始化,使得...
Servlet3.0是Java EE平台中的一个重要里程碑,它在Servlet规范上引入了许多创新特性,极大地提高了Web应用的开发效率和性能。在这个版本中,重点强调了异步处理和反向Ajax的支持,这两个特性使得Web应用能够更加高效...
类似于Servlet的注册方式,Servlet 3.0也支持在监听器类上使用`@WebListener`注解,无需在web.xml中声明。 4. **过滤器链的改进**: 过滤器可以使用`@WebFilter`注解来定义,同时支持通过注解配置过滤器的URL模式...
3. **注解配置**:Servlet 3.0引入了注解配置,开发者可以直接在Servlet、Filter或Listener类上使用注解,而无需在web.xml文件中进行繁琐的XML配置。例如,`@WebServlet`, `@WebFilter`, 和 `@WebListener` 分别用于...
例如,我们可以通过`@WebServlet`, `@WebFilter`和`@WebListener`注解直接在类级别定义它们,简化了部署描述符(web.xml)的维护。 2. **异步处理(Asynchronous Processing)** 该版本引入了异步Servlet,允许...
1. **注解配置**:Servlet 3.0引入了注解配置,允许开发者直接在类或方法上使用注解(@WebServlet, @WebFilter, @WebListener)来声明Servlet、Filter和Listener,不再需要web.xml文件进行硬编码。这大大简化了部署...