- 浏览: 1501011 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
继上次说到Listener的功效,这里就不得不说说另外一个接口HttpSessionListener了。
上次说到了ServletContextListener,它是用来监听Servlet Context的创建和销毁的状态。今天特别有兴趣在
聊聊另一个监听的接口,名字叫做HttpSessionListener。
在理解这个接口之前,先提出一个问题,就是假设我的web应用上想知道到底有多少用户在使用?
首先看一段代码。
package demo.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCounter implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
ServletContext ctx = event.getSession( ).getServletContext( );
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(1);
}
else {
int count = numSessions.intValue( );
numSessions = new Integer(count + 1);
}
ctx.setAttribute("numSessions", numSessions);
}
public void sessionDestroyed(HttpSessionEvent event) {
ServletContext ctx = event.getSession( ).getServletContext( );
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(0);
}
else {
int count = numSessions.intValue( );
numSessions = new Integer(count - 1);
}
ctx.setAttribute("numSessions", numSessions);
}
}
在这个解决方案中,任何一个Session被创建或者销毁时,都会通知SessionCounter 这个类,当然通知的原因是必须在web.xml文件中做相关的配置工作。如下面的配置代码:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Struts Examples</display-name>
<listener>
<listener-class>demo.listener.SessionCounter
</listener-class>
</listener>
... rest of web.xml
http://spaces.msn.com/members/Jauan/PersonalSpace.aspx?_c01_blogpart=blogmgmt&_c=blogpart
=======================================================================================
1.定义:Listioner是Servlet的监听器,它可以监听客户端的请求,服务取得操作等.
通过监听器,可以自动激发一些操作,比如监听在先的用户的数量.当增加一个HTTPsession时,就激发sessionCreated(HTTPsessionEvent sec)方法,这样就可以进行页面访问统计了.
a) ServletContextAttributeListenner监听对ServletContext属性的操作,比如增加,删除,修改属性.
b) ServletContextListener监听ServletContext.
当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法.
当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法.
c) HttpSessionListener监听HttpSession的操作
当创建一个Session时,激发sessionCreated(HttpSessionEvent se)方法;
当销毁一个Session时,激发sessionDestroyed(HttpSessionEvent se)方法.
当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;
当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;
当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se)方法.
<listener>
<listener-class>OnLineCountListener</listener-class>
</listener>
发表评论
-
ServletContext接口
2011-08-03 19:57 13451. 获取web应用(tomcat的Context ... -
ServletConfig接口
2011-08-03 19:41 13671. ServletConfig接口用于描述Ser ... -
HttpServletResponse
2011-08-03 19:31 18301. 控制消息头 add ... -
基于AOP设计思想的拦截器(Interceptor)与传统拦截器(Filter)的区别
2011-07-11 11:46 9407现在AOP的设计开发理念在软件开发中用的越来越广泛,在我们开发 ... -
一个简单jsp-servlet例子
2010-10-15 11:17 5471以下的简单 jsp-servlet 例子流程为: inde ... -
过滤器(filter)在web 中的应用(二)
2010-06-25 16:42 1120Filters是在请求资源(Servl ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解(2)
2010-06-25 13:56 163122、配置Struts <dis ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解(1)
2010-06-25 13:46 2862在项目中总会遇到一 ... -
web.xml中context-param,listener,filter,servlet加载顺序
2010-06-25 13:35 1895不同类别加载顺序:先 context-param 然后 lis ... -
过滤器(filter)在web 中的应用(一)
2010-06-22 17:38 2085过滤器(Filter)在Web开发中的应用: Filter是 ... -
javax.servlet基本类和接口
2010-06-19 21:25 2142基本类和接口一、javax.servlet.Servlet ... -
Session机制详解(jsp-servlet 技术)
2010-06-17 20:51 1489虽然session机制在web应用程序中被采用已经很长时间 ... -
servlet中配置文件web.xml中的参数context-param和init-param区
2010-06-17 09:56 1853web.xml里面可以定义两种参数:(1)applicatio ... -
优化Servlet配置为web.xml瘦身
2010-06-17 09:46 1745本文介绍优化Servlet配置为web.xml瘦身,web.x ... -
Java中用Servlet Listener实现定时监听
2010-06-12 13:50 1538分两步走: (1)实现 javax.servlet. ... -
戏说java web开发中的listener和filter
2010-06-12 11:26 1603今天在公司看到有同事在写filter,晚上一个人在家无聊,就想 ... -
谈谈Listener Servlet的应用
2010-06-12 10:53 1276... -
web中的listener简介
2010-06-12 10:42 1334... -
利用HttpSessionListener实现网站在线人数统计功能
2010-06-12 10:17 2062在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录 ...
相关推荐
下面将详细介绍如何使用`HttpSessionListener`来实现这些功能。 首先,我们需要创建一个类并实现`HttpSessionListener`接口。这个类必须包含两个方法:`sessionCreated(HttpSessionEvent se)`和`sessionDestroyed...
从以上知识点可以看出,尽管使用HttpSessionListener进行在线人数统计是一个简单易行的方法,但在实际应用中需要考虑各种可能影响统计准确性的因素,并采取相应的措施进行优化。在实际开发中,应根据应用的具体需求...
- 使用`HttpSessionListener`可以监控用户登录状态的变化,及时更新在线用户列表,从而确保各个子系统之间共享正确的用户状态信息。 - 通过`HttpSessionBindingListener`可以在用户登录时绑定必要的认证信息至会话中...
jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。
Java 在 Jetty9 中使用 HttpSessionListener 和 Filter Java 在 Jetty9 中使用 HttpSessionListener 和 Filter 是一种常见的技术,用于监听和过滤 HTTP 请求。在这篇文章中,我们将详细介绍如何在 Jetty9 中使用 ...
为了对Session的生命周期进行监控,开发者可以使用监听器(Listener)来捕获Session的创建、销毁以及移除等关键事件。本文将深入探讨如何在Spring MVC项目中实现Session监听,并详细讲解相关知识点。 首先,我们...
`关于Session监听器的使用方法.txt`可能包含了如何创建`SessionListener`类、实现接口方法和配置`web.xml`的详细步骤。文件名暗示了文档将提供使用`SessionListener`的具体指导。 总结来说,`SessionListener`是...
本项目通过实现`HttpSessionListener`接口,每隔一分钟动态更新在线人数,提供了高效且可靠的解决方案。以下是对这个话题的详细阐述: 1. **Java Servlet与HttpSessionListener** Java Servlet是Java EE平台中的...
当Web应用程序启动或停止时,服务器会调用该监听器的相应方法。我们可以通过实现这个接口,在应用启动时初始化在线人数计数器,并在应用关闭时清除相关数据。 ```java public class OnlineCounter implements ...
本文将深入探讨JSP监听器的使用方法和常见应用场景。 **一、监听器接口** 1. **ServletContextAttributeListener**:这个接口用于监听ServletContext对象中属性的变化,包括添加、删除或修改属性。当这些事件发生...
综上所述,J2EE登录人数统计不仅涉及了`HttpSession`与`HttpSessionListener`的基本使用,还牵涉到了并发控制、性能优化等高级话题。合理的设计与实现能够极大地提升用户体验,同时保证系统的稳定性和效率。
总结来说,使用HttpSessionListener来统计在线人数是一种有效的方法,但在实现时需要注意细节,如确保session数量的准确更新以及处理session生命周期事件。这样,我们就可以通过访问ServletContext来获取当前在线...
1. **创建SessionListener**:实现`SessionListener`接口,并重写`sessionCreated`和`sessionDestroyed`方法,用来记录用户登录和登出的信息。 2. **持久化Session**:选择合适的持久化策略,如数据库、缓存等,将`...
- 使用Session:将登录次数保存在用户的session中,但这种方法不适用于多个用户并发登录,且session可能因过期而丢失数据。 - 文件系统:将登录次数写入文件,每次登录后读取并更新。 - 使用缓存服务:如果项目中...
`HttpSessionListener`是Java Servlet API提供的一种机制,用于监听`HttpSession`对象的创建和销毁事件,从而实现对在线用户的统计。下面将详细解释如何通过`HttpSessionListener`来实现这一功能,并结合JavaScript...
要创建一个监听器,你需要实现`javax.servlet.HttpSessionListener`接口,并重写它的两个方法:`sessionCreated(HttpSessionEvent event)`和`sessionDestroyed(HttpSessionEvent event)`。前者在新的HTTP会话创建时...
对于`HttpSessionListener`,你需要实现`sessionCreated`和`sessionDestroyed`方法。`sessionCreated`会在新的用户会话创建时调用,可以记录会话创建数量,或者执行其他初始化操作。`sessionDestroyed`则在会话超时...
### Java的监听器种类 Java中的监听器是一种特殊类型的对象,它们主要负责监听特定的事件并在这些事件发生时执行相应的动作...理解并熟练掌握这些监听器的工作原理及其使用方法对于成为一名优秀的Java开发者至关重要。
在Java Web开发中,统计在线用户数量是一项常见的需求,这通常涉及到监听器(Listeners)的使用。在这个课堂案例中,我们将学习如何利用`HttpSessionListener`接口来实现这一功能。`HttpSessionListener`是Java ...