好记性不如烂笔头44-javaWeb中用Session统计在线人数(8)
2015-02-09 14:57
477 查看
JavaWeb应用中,很多的地方都和session有关。因此session相关的事件监听器,在日常工作中非常有用。
有时候我们需要统计当前在线的用户数,此时就可以使用监听器技术来很简单的实现这种功能。
1、 简单统计系统在线人数的源代码
示例源代码如下:
2、 测试用的index.jsp
3、 运行结果
启动WEB中间件,从URL访问:
http://127.0.0.1:8080/webStudy/index.jsp
用不同的浏览器访问,能看到这个在线人数在增加。
Index.jsp输出情况:
HttpSession创建后的Id是:0D36361994CAADB6969AFBA01952DB2E
当前在线人数:2
4、 大型系统的在线人数统计
如果系统不是只有一台服务器一个服务,那么这种方式就无法直接统计出有多少的在线用户。比如我一组应用,有100个tomcat在提供服务。
一个苯办法,不同的服务把各自的用户数写入到数据库,这样就只要读取这个值就可以了。
这里也可以牵涉好几种办法,一种是一个服务,记录一个位置,需要统计的时候,把所有服务的在线人数的数量累加即可。不仅仅可以算出在线人数,而且还能够分析不同的服务之间的人员差异。在评估服务器状况或者进行服务升级的时候,这种第一手的数据非常有用;
另外一种是每一个服务上都封装一个接口出来,当需要统计的时候,通过接口把这些数据汇总即可。这样能够降低数据库的压力,也是一种可行的办法。
有时候我们需要统计当前在线的用户数,此时就可以使用监听器技术来很简单的实现这种功能。
1、 简单统计系统在线人数的源代码
示例源代码如下:
[code]package com.servlet.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; /** * 简单实现统计在线人数功能。 * 注意:本功能仅使用单应用、单服务情况 * @author 范芳铭 */ public class EasyOnLineCount implements HttpSessionListener{ @Override public void sessionCreated(HttpSessionEvent se) { ServletContext context = se.getSession().getServletContext(); Integer onLineCount = (Integer) context.getAttribute("onLineCount"); if(onLineCount==null){ context.setAttribute("onLineCount", 1); }else{ onLineCount++; context.setAttribute("onLineCount", onLineCount); } } @Override public void sessionDestroyed(HttpSessionEvent se) { ServletContext context = se.getSession().getServletContext(); Integer onLineCount = (Integer) context.getAttribute("onLineCount"); if(onLineCount==null){ context.setAttribute("onLineCount", 1); }else{ onLineCount--; context.setAttribute("onLineCount", onLineCount); } } }
2、 测试用的index.jsp
[code]<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> HttpSession创建后的Id是:${pageContext.session.id} <br> <% String onLineCount = String.valueOf(application.getAttribute("onLineCount")); out.write("当前在线人数:" + onLineCount); %> </body> </html>
3、 运行结果
启动WEB中间件,从URL访问:
http://127.0.0.1:8080/webStudy/index.jsp
用不同的浏览器访问,能看到这个在线人数在增加。
Index.jsp输出情况:
HttpSession创建后的Id是:0D36361994CAADB6969AFBA01952DB2E
当前在线人数:2
4、 大型系统的在线人数统计
如果系统不是只有一台服务器一个服务,那么这种方式就无法直接统计出有多少的在线用户。比如我一组应用,有100个tomcat在提供服务。
一个苯办法,不同的服务把各自的用户数写入到数据库,这样就只要读取这个值就可以了。
这里也可以牵涉好几种办法,一种是一个服务,记录一个位置,需要统计的时候,把所有服务的在线人数的数量累加即可。不仅仅可以算出在线人数,而且还能够分析不同的服务之间的人员差异。在评估服务器状况或者进行服务升级的时候,这种第一手的数据非常有用;
另外一种是每一个服务上都封装一个接口出来,当需要统计的时候,通过接口把这些数据汇总即可。这样能够降低数据库的压力,也是一种可行的办法。
相关文章推荐
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb中的Session、SessionListener、在线人数统计
- 好记性不如烂笔头45-javaWeb中用Session控制表单重复提交(9)
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb中的Session、SessionListener、在线人数统计
- JavaWeb学习记录(二十六)——在线人数统计HttpSessionListener监听实现
- web项目设置session监听器,统计同时在线人数
- HttpSessionListener统计在线人数
- 利用HttpSessionListener实现网站在线人数统计功能
- asp.net 使用Application和Session对象统计在线人数
- asp.net 在线人数统计,页面访问量 Application ,session
- HttpSessionListener统计在线人数
- php session实现同时在线人数统计
- 关于jsp内置对象Session和Cookie使用的肤浅理解,如何使用Session来统计网站在线人数
- 利用HttpSessionListener实现网站在线人数统计功能
- ASP.NET中利用Application和Session统计在线人数、历史访问量