servlet中对session的监听有很多接口,功能很灵活,最常用的是监听Session和Attribute。这里要澄清一下概念,servlet中的session监听和Attribute监听含义有差别,session监听指的不是我们一般所理解的放置一个session或者销毁一个session,这是Attribute监听的功能,因为servlet中放置session的语法是session.setAttribute(“session名”,要放入的对象)。而session监听,监听的是HTTP连接,只要有用户与server连接,就算连接的是一个空白的jsp页面,也会触发session事件,所以此处的session实际上指的是connection,用来统计当前在线用户数最合适了。不知道我说清楚了没有。下面分别讲解这两种监听方式。
1、 session监听
首先编写一个session监听类,实作HttpSessionListener接口,它的作用是计算当前有多少个在线用户:
/*
*@Author bromon
*2004-6-12
*/
package org.bromon.test;
import javax.servlet.*;
import javax.servlet.http.*;
public
class SessionCount implements HttpSessionListener{
private static int
count=0;
public void sessionCreated(HttpSessionEvent se){
count++;
System.out.println(“session创建:”+new java.util.Date());
}
public
void sessionDestroyed(HttpSessionEvent se){
count--;
System.out.println(“session销毁:”+new java.util.Date());
}
public
static int getCount(){
return(count);
}
}
怎么样,是不是一目了然?count被定义为static,是因为要保证整个系统只有这一个count。如果你实在不放心,可以把它写成一个单例类。
然后在web.xml中声明这个监听器:
<listener>
<listener-class>
org.bromon.test.SessionCount
</listener-class>
</listener>
编写一个测试页面test.jsp,内容是获得count:
<%
int
count=org.bromon.test.SessionCount.getCount();
out.println(count);
%>
需要注意的是,这里根本不涉及任何session的操作。重启动App server,试着连接test.jsp,可以看到监听器已经开始工作。
2、 Attribute监听
例如一个站内消息系统,肯定要获得所有登陆者的ID,才有可能互发消息。这就涉及Attribute监听。假设我们写了个用户登陆的模块,用户通过身份验证之后会产生一个session,保存它的相关信息,比如:
//check.jsp
<%
String name=request.getParameter(“name”);
Name=new String(name.getBytes(“ISO8859-1”));
session.setAttribute(“user”,name);
%>
做过jsp的兄弟应该对这段代码再熟悉不过了,下面写个监听器来监听用户登陆,把所有用户的ID保存到一个List当中,这个监听器实作HttpSessionAttributeListener接口:
/*
*@Author bromon
*2004-6-12
*/
package
org.bromon.test;
import javax.servlet.*;
import
javax.servlet.http.*;
import java.util.*;
public class OnlineList
implements HttpSessionAttributeListener{
private static List list=new
ArrayList();
public void attributeAdded(HttpSessionBindingEvent se){
if("user".equals(se.getName())){
list.add(se.getValue());
}
}
public void attributeRemoved(HttpSessionBindingEvent se){
if("user".equals(se.getName())){
list.remove(se.getValue());
}
}
public void attributeReplaced(HttpSessionBindingEvent se){}
public static List getList(){
return(list);
}
}
写个简单的jsp来得到用户列表:
<%
java.util.List
list=org.bromon.test.OnlineList.getList();
out.println("共有"+list.size()+"名用户已登陆:");
for(int I=0;I
<lise.size();i++){
out.println(list.get(i));
}
%>
FROM:http://hi.baidu.com/hero8_8_8/item/8bce4eba8abac4e84fc7fdd8
- 浏览: 526049 次
- 性别:
- 来自: 上海
最新评论
-
宋贝贝:
您好,能麻烦您把这个包fisher.man.jce.PKCS1 ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest -
upset_ming:
DoubleCA的JCE实现了SM2算法的密钥协商,国密SM2 ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest -
stormlyf:
您好,能麻烦您把这个包fisher.man.jce.PKCS1 ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest -
kris_zhang:
CPU型号怎么弄?
Java获取电脑CPU个数及系统信息 -
linxinlong11007:
你好,我需要FishermanJCE,请问能发份这个包给我么? ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest
相关推荐
JAVA SESSION 监听器 有效监听服务器SESSION情况,当前登录用户等
HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX,SESSION监听器等内容HTML.rar 内容是常用AJAX...
利用session监听器实现一个客户不能再两个客户端登录。
自己学习写的一个监听session各个操作,从session创建到消毁。
一个自己写的实现单用户登录,单点登录的监听器,一旦新用户登录将会销毁上一个登录用户的session 只需在设置session值之前调用一下重置登录这个方法 值得注意的就是,里面的判断得根据自己的项目中存的session的...
主要介绍了Spring boot通过HttpSessionListener监听器统计在线人数的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
用session记录用户的登录状态 1.登录 2.登录成功后将此“已登录”状态保存。 3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到...
使用监听器跟踪session的生命周期和session的属性,文档详细介绍了
这是一个用springMVC的项目 是一个监听器 用于监听session的创建、销毁、移除。会触发相应的事件处理
属性监听和bean监听的区别: 属性监听:是对三个容器中的任何属性(包括对象和不是对象的数据,基本...从使用上它不同于前面两个监听器的学习,但给我们的感觉就是一个属性监听的vip用户,这个vip用户是一个JavaBean
主要介绍了SpringMVC拦截器实现监听session是否过期详解,还是比较不错的,这里分享给大家,供需要的朋友参考。
springboot框架原理、freemark模板标签语法、jpa数据库操作及自动建表、统一上传文件实现方法、自定义注解实现统一验证方法、权限拦截器实现权限...定时任务详解及定时备份数据库、session监听器及统计线上人数等等
springboot框架原理、freemark模板标签语法、jpa数据库操作及自动建表、统一上传文件实现方法、自定义注解实现统一验证方法、权限拦截器实现权限...定时任务详解及定时备份数据库、session监听器及统计线上人数等等...
JAVA Servlet 监听器...SessionActivationListener用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet..SessionListener接口或者javax.servlet..SessionActivationListener接口,或者两个都实现。 ...
JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar
本次工程的目标是学习监听器,掌握监听三个对象的创建和销毁方法。 三个对象:rquest,session,ServletContext 实现的接口:ServletRequestListener,HttpSessionListener,ServletContextListener 工程的大致步骤...
主要介绍了详解Spring MVC拦截器实现session控制,使用session监听,重复登录后,强制之前登录的session过期。有兴趣的可以了解一下。
NULL 博文链接:https://h496950806.iteye.com/blog/2044190
数据库操作 使用过滤器实现编码问题。 使用session监听器实现在线用户统计。
数据库操作 使用过滤器实现编码问题。 使用session监听器实现在线用户统计。