Listener的使用(监听用户session的开始和结束,HttpSession范围内属性的改变)
来源:互联网 发布:数据库默认值设置 编辑:程序博客网 时间:2024/05/20 18:49
HttpSessionListener用于监听用户session的创建和销毁,实现该接口的监听器需要实现sessionCreated和sessionDestroyed方法
HttpSessionAttributeListener用于监听HttpSession范围内属性的变化,需实现attributeAdded、attributeRemoved、attributeReplaced三个方法,同ServletRequestAttributeListener、ServletContextAttributeListener的使用方法相似,具体参考前两篇博客
1. 实现Listener接口OnlineListener.java,统计在线用户的信息
package test;
import javax.servlet.*;
import javax.servlet.http.*;import java.util.*;
public class OnlineListener implements HttpSessionListener{
//当用户与服务器之间开始session时触发该方法
public void sessionCreated(HttpSessionEvent se){
HttpSession session = se.getSession();
ServletContext application = session.getServletContext();
//获取session ID
String sessionId = session.getId();
//如果是一次新的会话
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 Hashtable<String , String>();
}
//将用户在线信息放入Map中
online.put(sessionId , user);
application.setAttribute("online" , online);
}
}
//当用户与服务器之间session断开时触发该方法
public void sessionDestroyed(HttpSessionEvent se){
HttpSession session = se.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);
}
}
2. 显示在线用户的信息online.jsp
<%@ page contentType="text/html; charset=GBK" language="java"
errorPage=""%>
<%@ page import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>用户在线信息</title>
<meta name="website" content="http://www.crazyit.org" />
</head>
<body>
在线用户:
<table width="400" border="1">
<%
Map<String, String> online = (Map<String, String>) application.getAttribute("online");
for (String sessionId : online.keySet()) {
%>
<tr>
<td><%=sessionId%>
<td><%=online.get(sessionId)%>
</tr>
<%}%>
</body>
</html>
- Listener的使用(监听用户session的开始和结束,HttpSession范围内属性的改变)
- Listener的使用(监听ServletContext范围内属性的改变)
- Listener的使用(监听用户请求,ServletRequest范围内属性的变化)
- UniGui中如何监听Session的开始与结束
- HttpSession和Hibernate的session
- 监听属性的改变
- HttpSession 相关的监听
- 1、Spring Session-使用Redis的HttpSession
- 2、Spring Session-使用JDBC的HttpSession
- 3、Spring Session-使用Hazelcast的HttpSession
- HttpSession和jsp中session的区别
- JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容么?
- JAVA得到一个指定日期范围内每天的开始时间和结束时间
- 源组件(bean)的属性改变支持PropertyChangeSupport和属性改变监听PropertyChangeListener
- PHP内核-用户请求的开始和结束
- 粒子效果的开始和结束颜色属性
- 关于Listener监听的session的定时销毁
- 我们的开始和结束
- 行转列,列转行,decode,case... when ... then ..
- 求最小树的Kruskal算法
- 康拓展开及逆康拓展开
- 产品经理(PM)简介
- Win 32 多线程程序设计学习笔记之四:同步控制(Synchronization)
- Listener的使用(监听用户session的开始和结束,HttpSession范围内属性的改变)
- 动态语言比较学习--基础
- Linux 下编译Android-VLC开源播放器详解(附源码下载)
- 【转】关于线段树
- 隋炀帝的大业
- 获取图像感兴趣地矩形区域实现
- 100句十分精辟的人生格言
- 利用KEIL编程nop()如何定义?
- POJ 1000 A+B Problem