http://blog.csdn.net/wyzsc/article/details/6258567
一、Servlet中对象作用域
1、 ServletContext 上下文
应用服务器一启动就产生该对象,服务器关闭即销毁
作用于全局,所有Servlet ,相当于静态变量
2、 HttpSession 会话
客户端第一次请求产生,session过期销毁
作用于同一个客户端,相当于成员变量
3、 ServletRequest请求
一次请求产生一个对象,请求结束即销毁
作用于同一次请求,相当于局部变量
二、Servlet监听器
工作流程:
(1)确定事件源
(2)写一个类,实现Servlet监听器接口,并从写接口里面的方法
(3)在web.xml里注册建立联系,
<listener>
<listener-class>Servlet类事件源全路径</listener-class>
</listener>
(4)事件源触发事件,监听器调用相应方法
1、ServletContext事件
(1)ServletContextListener接口,用于监听ServletContext的创建与销毁
相应方法:
void contextInitialized(ServletContextEvent e); ServletContext创建触发
void contextDestroyed(ServletContextEvent e); ServletContext销毁触发
(2)ServletContextAttribyteListener接口,用于监听ServletContext属性状态
相应方法:
void attributeAdded(ServletContextEvent e); ServletContext属性加入触发
context.setAttribute(“a”,”b”);
void attributeRemovd(ServletContextEvent e); ServletContext属性删除触发
context.removeAttribute(“a”,);
void attributeReplaced(ServletContextEvent e); ServletContext属性修改触发
context.setAttribute(“a”,”c”);
2、HttpSession事件
(1)HttpSessionListener接口,用于监听session的创建与销毁
相应方法:
void sessionCreated(HttpsessionEvent e) session 创建触发
void sessionDestroyed (HttpsessionEvent e) session 销毁触发
(2)HttpSession AttributeListener接口,用于监听session属性状态
相应方法:同ServletContextAttribyteListener
(3)HttpSessionBindingListener接口,用于监听绑定对象到Session属性监听
唯一一个不用在web.xml里注册的监听接口
绑定
Ression.setAttribute(“a”, 实现该接口的对象),
触发void valueBound(HttpSessionBindingEvent e);方法
移除:
Ression.removeAttribute(“a”),
触发void valueUnbound(HttpSessionBindingEvent e);方法
3、 SercletRequest事件
(1)ServletRequestListener接口 用于监听request的销毁与创建
(2)ServletRequesAttributetListener接口 用于监听request的属性状态
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/20100719/456543.html
文章:配置监听器
21.3 Servlet监听器实例讲解-站点计数监听器
监听器也是Servlet 2.3新增的功能,在许多触发性的处理中需要。通常用做用户某一事件的触发监听,比如监听用户的来访和退出、监听某一数据事件的发生或者定义一个周期性的时钟定期执行。这一功能极大地增强了Java Web程序的事件处理能力。
为了演示监听器的使用,这里以在线用户计数器为例进行讲解。本节为了演示,我们使用Tomcat默认的ROOT项目代码进行测试。首先在D:/Tomcat 6.0/webapps下新建测试站点目录counter,并复制D:/Tomcat 6.0/webapps/ROOT下的所有文件和目录到D:/Tomcat 6.0/webapps/counter目录下。下面在该目录下进行调试。
21.3.1 配置监听器
首先在文件counter/WEB-INF/web.xml中添加如下的监听器器配置:
- <listener>
- <listener-class>com.utils.CounterListener</listener-class>
- </listener>
21.3.2 编写监听器类
在counter/WEB-INF/classes/com/utils下新建类CounterListener.java,代码如下:
- package com.utils;
- import javax.servlet.http.*;
- public class CounterListener implements HttpSessionListener {
- public static int count;
- public CounterListener () {
- count = 0;
- }
- //创建一个session时激发
- public void sessionCreated(HttpSessionEvent se) {
- count++;
- }
- //一个session失效时激发
- public void sessionDestroyed(HttpSessionEvent se) {
- if(count>0) count--;
- }
- };
在该代码中,变量count为静态变量,在整个系统中唯一,记录整个系统中在线用户数。sessionCreated()在用户到访时自动调用,使用count++;sessionDestroyed()在用户会话过期或单击退出销毁session时调用,使用count--。
21.3.3 运行查看监听效果
统计的功能有了,现在在login.jsp中添加一句代码,用以显示用户计数:
当前在线用户:<%=com.utils.CounterListener.count%>
访问http://localhost:8081/counter/index.htm,单击登录.
文章:session监听器的使用
监听器概述
1.Listener是Servlet的监听器
2.可以监听客户端的请求、服务端的操作等。
3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1。
4.编写监听器需要实现相应的接口
5.编写完成后在web.xml文件中配置一下,就可以起作用了
6.可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪
常用的监听接口
1.ServletContextAttributeListener
监听对ServletContext属性的操作,比如增加/删除/修改
2.ServletContextListener
监听ServletContext,当创建ServletContext时,激发contextInitialized (ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed (ServletContextEvent sce)方法。
3.HttpSessionListener
监听HttpSession的操作。当创建一个Session时,激发session Created(SessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。
4.HttpSessionAttributeListener
监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded (HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved (HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced (HttpSessionBindingEvent se) 方法。
使用范例:
由监听器管理共享数据库连接
生命周期事件的一个实际应用由context监听器管理共享数据库连接。在web.xml中如下定义监听器:
listener
listener-classXXX.MyConnectionManager/listener-class
/listener Øserver创建监听器的实例,接受事件并自动判断实现监听器接口的类型。要记住的是由于监听器是配置在部署描述符web.xml中,所以不需要改变任何代码就可以添加新的监听器。
public class MyConnectionManager implements ServletContextListener{
public void contextInitialized(ServletContextEvent e) {
Connection con = // create connection
e.getServletContext().setAttribute(con, con);
}
public void contextDestroyed(ServletContextEvent e) {
Connection con = (Connection) e.getServletContext().getAttribute(con);
try {
con.close();
}
catch (SQLException ignored) { } // close connection
}
}
监听器保证每新生成一个servlet context都会有一个可用的数据库连接,并且所有的连接对会在context关闭的时候随之关闭。
计算在线用户数量的Linstener
(1)
Package xxx;
public class OnlineCounter {
private static long online = 0;
public static long getOnline(){
return online;
}
public static void raise(){
online++;
}
public static void reduce(){
online;
}
}
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnlineCounterListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent hse) {
OnlineCounter.raise();
}
public void sessionDestroyed(HttpSessionEvent hse){
OnlineCounter.reduce();
}
}
在需要显示在线人数的JSP中可是使用
目前在线人数:
%@ page import=xxx.OnlineCounter %
%=OnlineCounter.getOnline()%
退出会话(可以给用户提供一个注销按钮):
form action=exit.jsp method=post
input type=submit value=exit
/form
exit.jsp: %session.invalidate() ;%
在web.xml中加入:
listener
listener-classservletlistener111111.SecondListener/listener-class /listener
怎么样,就是这么简单,不用对现有代码做任何的修改。
相关推荐
在Java Web开发中,Servlet监听器(Servlet Listener)扮演着重要的角色,它是Servlet规范的一部分,允许开发者对Web应用程序中的特定事件进行监听和响应。在这个范例中,我们将深入探讨如何利用监听器来统计在线...
Servlet监听器技术是Java Servlet规范中的一项重要特性,它允许开发者在特定的Servlet容器事件发生时执行自定义的代码逻辑。这些事件可以包括Web应用程序的初始化、终止,或者是Servlet或Servlet上下文...
在本文中,我们将深入探讨Java EE(J2EE)中的Servlet监听器以及它们在Web应用程序中的作用,特别是在访问人数统计和引入MVC模式方面。首先,让我们了解什么是Servlet监听器。 Servlet监听器是Java Servlet规范的一...
2. **HttpSession监听器**: - `HttpSessionListener`接口:用于监听HttpSession的创建和销毁事件。`sessionCreated`方法在新的HttpSession被创建时调用,`sessionDestroyed`方法在HttpSession失效或被显式地销毁时...
该项目旨在使会话管理对现有的 Web 应用程序透明(零代码更改)并尽可能与各种 JEE 容器兼容,同时提供对会话 API 的完全支持,包括不同的会话监听器。Redis 支持单实例、基于哨兵和集群模式。使用 Redis 时,有两种...
Servlet监听器是Servlet规范中定义的一种特殊类,用于监听Web应用程序中的ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件,以及这些域对象的属性发生修改的事件。在基于移动Web在线考试系统...
- 监听器是Java Servlet API的一部分,它们是实现了特定监听接口的类,用于监听服务器、Servlet上下文(ServletContext)、HttpSession以及请求对象等发生的事件。 - 监听器可以自动触发某些操作,例如监控在线...
### Servlet监听器总结 #### 一、Listener概念与作用 - **定义**:在Java Web开发中,Listener(监听器)是一种特殊的组件,主要用于监听容器内的特定事件,并根据这些事件的发生执行相应的处理逻辑。 - **功能**...
Servlet监听器是Java Web开发中的一种关键组件,主要用于监控和响应Web应用程序中的特定事件。它们是Servlet规范中定义的特殊类,能够监听ServletContext、HttpSession和ServletRequest等域对象的生命周期事件,以及...
Servlet监听器是Java Web开发中的一个重要概念,它允许开发者在特定事件发生时执行代码,比如在Web应用程序启动或停止时,或者在某个Servlet实例被创建或销毁时。本教程将深入探讨Servlet监听器的工作原理、类型以及...
Web监听器是Java Web应用程序中的一个重要组件,它们允许开发者在特定事件发生时执行代码,比如在Servlet上下文初始化或销毁时、用户会话创建或结束时等。在Java Web开发中,监听器通过实现特定接口并配置在`web.xml...
在Servlet容器(如Tomcat)中,每当Servlet的生命周期事件发生时,如Servlet的加载、初始化、服务、销毁等,对应的监听器接口就会被调用,执行相应的回调方法。 1. **Servlet监听器接口**: - `javax.servlet....
Servlet 过滤器与监听器 概述: Servlet 过滤器(Filter)和监听器(Listener)是 Java Web 应用程序中常见的两种组件,它们提供了各种扩展 Web 应用程序功能的方式。过滤器和监听器都可以通过 Java Web 应用程序...
Servlet监听器是Java Web开发中的一个重要概念,它允许开发者对Web应用程序中特定事件的发生进行响应。监听器基于Java的事件驱动模型,通过实现特定的接口,可以在ServletContext、HttpSession和ServletRequest等...
Servlet监听器是Java Web开发中的一个重要概念,它属于Java Servlet规范的一部分,主要应用于JSP/Servlet环境。在Java Web应用程序中,监听器(Listeners)扮演着观察者(Observer)的角色,能够监听特定事件的发生...
例如,当一个新的会话创建时,会触发HttpSession监听器的`sessionCreated()`方法。监听器分为三类: 1. **ServletRequest监听器**:监控HTTP请求,可以获取请求的详细信息。 2. **HttpSession监听器**:关注会话的...
在这个名为“Servlet技术(事件监听器-在线踢人)”的压缩包中,我们可以看到一个关于如何使用Servlet实现在线用户管理,特别是“在线踢人”功能的示例。这里的“在线踢人”通常指的是在Web应用中强制下线特定用户。...