- 浏览: 565189 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
忽然想起要做个在线用户的功能
提供一个页面来监控所有在线用户,其实只要知道用户名、ip地址、登录时间即可 ,
当然,扩展后看到所有访问web应用的在线用户也可以(即没登录的也算)
在网上搜索了点资料 ,写了简单的例子,本地已经调试通过,还有待完善
列表 :
web.xml
onlineUser.jsp
OnlineUserListener.java implements HttpSessionListener
OnLineUsers.java implements HttpSessionBindingListener
1、如果只要简单的统计在线用户,直接使用 onlineUser.jsp 就可以
不过 不可以监控 session自动失效等情况
2、加入了OnlineUserListener.java(HttpSessionListener) 后,解决了 session失效的监控
这个需要在web.xml中注册
3、OnLineUsers.java (HttpSessionBindingListener)
这个类是用来扩展的,实现 HttpSessionBindingListener,首先不需要在web.xml中注册 ,只需要在登录的时候 调用 session.setAttribute("xx", new OnLineUsers(userName)); 来绑定session ,可以考虑后续通过sessionid 来控制session
下面直接上代码了
onlineUser.jsp
OnlineUserListener.java 需要在web.xml中注册
OnLineUsers ,扩展用的,这次基本没派上用场
提供一个页面来监控所有在线用户,其实只要知道用户名、ip地址、登录时间即可 ,
当然,扩展后看到所有访问web应用的在线用户也可以(即没登录的也算)
在网上搜索了点资料 ,写了简单的例子,本地已经调试通过,还有待完善
列表 :
web.xml
onlineUser.jsp
OnlineUserListener.java implements HttpSessionListener
OnLineUsers.java implements HttpSessionBindingListener
1、如果只要简单的统计在线用户,直接使用 onlineUser.jsp 就可以
不过 不可以监控 session自动失效等情况
2、加入了OnlineUserListener.java(HttpSessionListener) 后,解决了 session失效的监控
这个需要在web.xml中注册
<listener> <listener-class>OnlineUserListener</listener-class> </listener>
3、OnLineUsers.java (HttpSessionBindingListener)
这个类是用来扩展的,实现 HttpSessionBindingListener,首先不需要在web.xml中注册 ,只需要在登录的时候 调用 session.setAttribute("xx", new OnLineUsers(userName)); 来绑定session ,可以考虑后续通过sessionid 来控制session
下面直接上代码了
onlineUser.jsp
<%@ page language="java" import="java.util.*,OnLineUsers" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <% String userName = request.getParameter("userName"); String type = request.getParameter("type"); String sessionUserName = (String) session.getAttribute("userName"); sessionUserName = (sessionUserName == null) ? "" : sessionUserName; // 把用户名放入在线列表 List onlineUserList = (List) application.getAttribute("onlineUserList"); // 第一次使用前,需要初始化 if (onlineUserList == null) { onlineUserList = new ArrayList(); application.setAttribute("onlineUserList", onlineUserList); } if (userName != null && "login".equals(type)) { if (sessionUserName != null) { //先删除 之前的用户 ,再加入新登录的用户 ,这样可以保证不会重复增加 onlineUserList.remove(sessionUserName); } // 把用户名保存进session session.setAttribute("userName", userName); //如何控制 在一台机器登录两次 后 不会重复增加? onlineUserList.add(userName); response.sendRedirect("onlineUser.jsp"); //绑定session session.setAttribute("xx", new OnLineUsers(userName)); } //注销操作 ,一种是正常流程退出(页面上注销),还有一种是关闭浏览器、session自动失效的在Servlet中控制 if ("logout".equals(type)) { // 销毁session session.invalidate(); // 从在线列表中删除用户名 if (onlineUserList != null) { onlineUserList.remove(userName); } sessionUserName = ""; } %> </HEAD> <BODY> <h1> 在线用户Demo </h1> <h3> 当前用户:<%=sessionUserName%> [ <a href="onlineUser.jsp?type=logout">注销</a>] </h3> <form action="onlineUser.jsp?type=login" method="post"> <input name="userName" value="userName" size="20" type="text"> <input name="passWord" value="passWord" size="20" type="password"> <input type="submit" value="登录"> </form> <hr> <h3> 在线用户列表 </h3> <table> <% for (int i = 0; i < onlineUserList.size(); i++) { String onlineUsername = (String) onlineUserList.get(i); %> <tr> <td><%=onlineUsername%></td> </tr> <% } %> </table> </BODY> </HTML>
OnlineUserListener.java 需要在web.xml中注册
import java.util.List; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; /** * @author 版本 监听所有session的创建和销毁 ,需要在web.xml中注册 */ public class OnlineUserListener implements HttpSessionListener { /** * 新建session */ public void sessionCreated(HttpSessionEvent event) { System.out.println("新建session:" + event.getSession().getId()); } /** * 销毁 session ,如session失效,测试时候可以修改 web.xml 中 session-timeout */ public void sessionDestroyed(HttpSessionEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 取得登录的用户名 String username = (String) session.getAttribute("userName"); // 从在线列表中删除用户名 List onlineUserList = (List) application.getAttribute("onlineUserList"); if (onlineUserList != null) { onlineUserList.remove(username); } System.out.println(username + "已经退出!"); } }
OnLineUsers ,扩展用的,这次基本没派上用场
import java.util.HashMap; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; /** * * 需要在登录时候调用 session.setAttribute("xx",new OnLineUsers(userName)); * 即可绑定,不需要在web.xml中注册 * * * 可以通过这个来 保存sessionid 和session的对应关系,供需要的时候使用 * * @author * @date 2013-1-5 上午09:06:06 * * @version 1.0 */ public class OnLineUsers implements HttpSessionBindingListener { String yhm; public OnLineUsers(String yhm) { System.out.println("OnLineUsers..."); this.yhm = yhm; } public void valueBound(HttpSessionBindingEvent event) { System.out.println("OnLineUsers... valueBound"); HttpSession session = event.getSession(); ServletContext context = session.getServletContext(); HashMap<String, String> olu = (HashMap<String, String>) context.getAttribute("OnLineUsers"); if (olu == null) { olu = new HashMap<String, String>(); context.setAttribute("OnLineUsers", olu); } olu.put(yhm, session.getId()); } public void valueUnbound(HttpSessionBindingEvent event) { System.out.println("OnLineUsers... valueUnbound"); HttpSession session = event.getSession(); ServletContext context = session.getServletContext(); HashMap<String, String> olu = (HashMap<String, String>) context.getAttribute("OnLineUsers"); if (olu != null) { olu.remove(yhm); } } }
发表评论
-
Docker 开源的应用容器引擎
2015-05-17 21:15 810Docker 是一个开源的应用容器引擎,让开发者可以打包他们 ... -
Ext Textfield框必填项 *号
2014-03-10 16:59 2670方法1:在items中加*号 var shortNam ... -
Struts2中查看Action配置的插件 -- Config Browser Plugin
2014-03-06 09:38 968(摘自官方介绍: http://struts.apache.o ... -
基于Spring的Rest服务中乱码问题
2013-12-10 18:45 15612Spring搭建的Rest服务端 在使用客户端调用Rest ... -
tomcat 报 “too many open files Too many open files" 问题的解决思路
2013-11-03 01:43 1623转:http://blog.csdn.net/big1980/ ... -
jsp的合并单元格
2013-05-27 08:59 1569合并单元格 <!DOCTYPE HTML PUBL ... -
tomcat 启动报错,日志不全如何检查
2013-04-10 15:30 1963有的时候由于某个配置错误,导致tomcat启动失败,但是呢日志 ... -
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor
2013-03-20 16:02 2970最近项目上有个需求用到了Tomcat的后台推送技术,采用了非阻 ... -
表头固定表格jquery.chromatable
2013-03-09 14:08 1384直接上图吧 -
Spring MVC的使用
2013-02-07 15:42 839以前一直使用Struct2的MVC框架,感觉挺好用的,也 ... -
转 TortoiseSVN中分支和合并实践
2013-01-31 11:13 869转 TortoiseSVN中分支和合并实践 http://p ... -
Git的使用
2013-01-31 09:24 1763版本控制 从最早使用vs ... -
管理JDBC连接池jar包c3p0
2013-01-29 11:45 1560com.mchange.v2.c3p0.ComboPooled ... -
DbUtils的使用
2013-01-28 19:56 1254DbUtils的使用 今天在看一段源码的时候,看到了可以使用 ... -
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
2013-01-28 19:48 13280com.sybase.jdbc3.jdbc.SybDriver ... -
Apache+tomcat配置集群
2013-01-22 19:30 1010直接上图 下载 http://download.cs ... -
Apache + Tomcat 配置多个应用
2013-01-22 19:05 1148今天在网上发现一篇帖子 ,Apache + Tomcat 配置 ... -
RSS的读取和发布
2013-01-22 15:53 1716这几天研究了RSS RSS(简易信息聚合,也叫聚合内容)是 ... -
短网址的原理和实现
2013-01-22 15:36 15376微博上经常会看到类似 http://t.cn/Afafhe 这 ... -
一个统一管理的例子,用观察者模式实现
2013-01-11 17:47 985如有这么一个需求 平台中需要实现一个统一管理的功能 ...
相关推荐
在JAVA Web开发中,实现在线用户统计是一项关键功能,它能够帮助网站或应用程序的管理员实时了解当前有多少用户正在访问和使用系统。这个“JAVA Web在线用户统计”解决方案显然是强大、好用且简单的,这意味着它可能...
Java Web在线人数统计是Web应用程序中常见的需求,用于获取当前网站活跃用户数量。这个功能的实现通常基于HTTP协议的工作机制,特别是对Session的管理和监听。本文将深入探讨如何使用Java Web技术来监听并统计在线...
在Java编程领域,开发一个在线用户数统计组件是一项常见的任务,尤其对于构建实时Web应用程序和服务至关重要。...通过学习和理解这些源代码,开发者可以更好地掌握Java在Web应用统计领域的应用,提升自己的技能水平。
【Java Web应用开发 53 课堂案例-应用监听器统计在线人数】 在Java Web开发中,统计在线用户数量是一项常见的需求,...通过这个案例,开发者可以深入理解Java Web应用中监听器的概念及其在统计在线人数中的实际应用。
在Java Web开发中,统计在线人数是一项常见的需求,它能够帮助我们了解网站或应用的实时活跃用户数量。这里我们将深入探讨如何实现这一功能。 首先,我们需要理解“在线人数”的定义。通常,它指的是在一定时间窗口...
在Web应用中,用户的在线状态通常基于HTTP会话(Session)。当用户访问网站并登录后,服务器会为该用户创建一个唯一的会话ID,并将其保存在服务器端,同时将这个ID通过Cookie发送给客户端。每次用户发送请求时,都会...
在.NET C#开发环境中,`Session` 是一种用于存储客户端会话状态的关键技术。它允许开发者在用户浏览器会话期间保持特定...通过深入理解和合理运用`Session`,开发者能够更好地管理用户会话,优化Web应用程序的功能。
Servlet监听器是Java Web开发中的一个重要组件,它们允许开发者在特定事件发生时执行代码,比如当Web应用程序启动或停止时,或者当用户会话被创建、更新或销毁时。在"jsp中监听器实现在线用户统计"这个场景下,我们...
2. **Session管理**:在Web应用中,Session是用于跟踪用户状态的一种机制。当用户登录后,服务器会为该用户创建一个Session,并在客户端保存一个Session ID,后续的每次请求都会携带这个ID,以便服务器识别用户身份...
在WebChart插件中,折线图被广泛用于各种场景,例如监控网站流量、分析销售趋势、追踪用户行为等。通过折线图,我们可以清晰地看到数据在不同时间段内的增减情况,从而对业务表现进行深入分析。 **WebChart插件特性...
在Web开发中,统计图是展示数据和信息的重要方式,特别是在数据分析、监控或者用户界面设计中。本主题主要关注如何使用CSS(层叠样式表)和JavaScript来创建动态且交互式的网页统计图。CSS用于控制网页元素的外观,...
总结来说,通过结合使用`HttpSessionListener`和`ServletRequestListener`,并结合`web.xml`中的配置,可以有效地统计Java Web应用程序中的在线用户人数。需要注意的是,实际项目中可能还需要处理各种异常情况,如...
根据提供的文件信息,可以总结和生成以下几个相关的IT知识点: ### 1. 产品概述 #### 1.1 安恒WAF产品概述 ...通过对这些知识点的学习和掌握,用户可以更好地利用该产品来保护自己的Web应用免受攻击。
### Anchiva WEB应用防火墙V3.5 用户手册知识点概览 #### 一、产品概述 **Anchiva WEB应用防火墙(WAF)**是一款专门针对Web应用程序提供防护的安全设备,通过实时分析和过滤进出Web服务器的HTTP/HTTPS流量,有效...
- 在Java Web应用程序中,`HttpSession`对象用于存储特定于某个用户的会话数据。 - `HttpSession`提供了跨多个请求存储和检索数据的能力,这对于跟踪在线用户非常有用。 3. **Servlet** - Servlet是Java EE的一...
10. **项目实战**:教程中的案例涵盖了多个实际应用场景,如用户注册登录、商品展示与购买、数据统计分析等,这些项目经验将帮助学习者巩固理论知识,提升解决实际问题的能力。 通过本教程的学习,读者不仅能掌握...
在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...
"Afritxia在线用户统计、在线编辑器、验证码图片_webtest.zip"这个压缩包文件似乎包含了与Web应用开发相关的三个主要组件:用户统计、在线编辑器和验证码图片。下面将详细讨论这三个知识点。 首先,**在线用户统计*...