`
ztttly
  • 浏览: 94932 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

实现在线人数统计

阅读更多
在很多web项目中会需要在线人数统计。
前端时间做了一个这样的模块,具体实现如下:
(1) web.xml
session超时定义是必须的:
<!-- session超时定义,单位为分钟 -->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
监听器:
<!-- 监听器 -->
<listener>         
<listener-class>com.coolhu.web.action.login.OnlineSessionListener</listener-class>     
</listener>
(2 )OnlineSessionListener监听器:
public class OnlineSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
@SuppressWarnings("unchecked")
public void sessionDestroyed(HttpSessionEvent event) {

HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
WebApplicationContext context = WebApplicationContextUtils
.getWebApplicationContext(application);
// 取得登录的用户名
UserPO userPO = (UserPO) session
.getAttribute("user");//从session中获得user信息
if (userPO != null) {
// 从在线列表中删除用户名
Vector<OnlineUsersPO> onlineUserV = (Vector<OnlineUsersPO>) application
.getAttribute("onlineUserV");
Iterator iter = onlineUserV.iterator();
OnlineUsersPO po = null;
while (iter.hasNext()) {
po = (OnlineUsersPO) iter.next();
if (po.getUserSessionId() != null
&& po.getUserSessionId().equals(session.getId())) {
break;
}
}
onlineUserV.remove(po);

}
}
(3)因为用的struts2,所以我的登录的action是这么写的:
public String login(){
ServletContext application = request.getSession()
.getServletContext();
Vector<OnlineUsersPO> onlineUserV = (Vector<OnlineUsersPO>) application
.getAttribute("onlineUserV");
// 第一次使用前,需要初始化
if (onlineUserV == null) {
onlineUserV = new Vector<OnlineUsersPO>();
application.setAttribute("onlineUserV", onlineUserV);
}
// 向集合中添加添加登录的相关信息
onlineUserV = addOnlineInfo(onlineUserV, user, loginName, request
.getSession().getId());
}
使用到的addOnlineInfo方法:
private Vector<OnlineUsersPO> addOnlineInfo(
Vector<OnlineUsersPO> onlineUserV, UserPO user, String loginName,
String sessionId) {
if (user != null) {
OnlineUsersPO po = new OnlineUsersPO();
po.setLoginName(loginName);//登录人
Timestamp time = new Timestamp(new Date().getTime());
po.setLoginTime(time);//登录时间
po.setUserId(po.getUserId());//用户id
po.setUserSessionId(sessionId);//sessionid
//ip
String ip = "";
ip = getIpAddr(request);
if(ip!=null)
po.setLoginIp(ip);//登录ip
onlineUserV.add(po);

}
return onlineUserV;
}
//getIpAddr是获取登录用户ip信息的
private String getIpAddr(HttpServletRequest request) {
       String ip = request.getHeader("x-forwarded-for");
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getHeader("Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getHeader("WL-Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getRemoteAddr();
       }
       return ip;
   }
。。。。。。后台的登录到注销一系列的统计完成了。
剩下就需要在页面显示了,将Vector<OnlineUsersPO> onlineUserV 集合读取出来,安排好显示即可!
分享到:
评论

相关推荐

    监听器实现在线人数统计

    除了Java Web,其他技术栈如Node.js、Python Flask等也有类似监听机制,如Express的中间件或者Flask的before_request/after_request装饰器,同样可以实现在线人数统计。 总结起来,通过监听器实现在线人数统计的...

    .Net实现在线人数统计和对数据库中表的操作

    开发者会在这些文件中编写相应的逻辑来实现在线人数统计和数据库操作功能。 总的来说,这个项目涵盖了Web开发中的关键知识点,包括会话管理、数据库操作和页面交互,这些都是构建复杂Web应用程序的基础。通过深入...

    利用HttpSessionListerner实现在线人数统计

    以上就是利用`HttpSessionListener`实现在线人数统计的基本步骤和原理,通过结合Java后端和JavaScript前端,可以实现动态、实时的在线用户统计功能。这种方法简单实用,但在高并发场景下可能需要优化,以避免频繁的...

    setInterval定时调用ajax实现在线人数统计-你得到了正确的数据那才是你会了,-

    标题中的“setInterval定时调用ajax实现在线人数统计”是一个常见的Web开发技术,用于实时更新网站的在线用户数量。这个技术结合了JavaScript的`setInterval`函数和Ajax(异步JavaScript和XML)请求,用于定期向...

    ASP中如何实现同时在线人数统计

    要实现在线人数统计,首先需要在全局.asa文件或相应的ASP页面中设置以下代码: ```asp Sub Session_OnStart application("online") = application("online") + 1 End Sub Sub Session_OnEnd application("on...

    Javaweb实现在线人数统计代码实例

    "Javaweb实现在线人数统计代码实例" 本资源主要介绍了Javaweb实现在线人数统计代码实例,通过示例代码详细介绍了在线人数统计的实现过程,对大家的学习或者工作具有一定的参考学习价值。下面是本资源的详细知识点...

    JSP 在线人数统计的实现

    **JSP 在线人数统计的实现** 在Web开发中,实时在线人数统计是一项常见的需求,它可以帮助网站管理员了解当前有多少用户正在访问网站,以便优化资源分配和服务质量。JSP(JavaServer Pages)作为Java Web开发的重要...

    javaweb开发在线人数统计

    在线人数统计的实现也可以使用其他技术,例如使用应用程序的 Context 来保存在线用户名单,但是使用 HttpSessionBindingListener 接口可以使得实现更加简洁和高效。 在线人数统计的应用场景非常广泛,例如在线聊天...

    在线人数统计 在线人数统计

    总的来说,在线人数统计是通过跟踪用户会话、实时更新和持久化存储来实现的,涉及到Web应用程序的多个层面,包括前端页面、后端逻辑、配置管理和资源管理。理解并掌握这些知识点对于开发高效、准确的在线人数统计...

    用JSP程序实现统计当前在线人数

    在IT领域,特别是Web开发中,统计在线用户数量是一个常见的需求。这不仅有助于了解网站的实时访问情况,还可以用于优化服务器资源、提升用户体验等。在本文中,我们将深入探讨如何利用JSP(JavaServer Pages)技术来...

    JSP统计在线人数实现

    在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 实现在线人数统计功能,以便展示当前在线的用户数量。我们将分析提供的代码段,并解释关键概念和技术。 首先,我们有一个名为`onLineUser`的类,它实现了`...

    基于_NET内置对象的在线人数统计

    综上所述,基于ASP.NET的在线人数统计主要是利用Application对象来实现全局的计数,结合Session对象来管理用户的会话状态,从而提供一个准确反映当前站点访问量的指标。同时,通过合理地处理并发、超时和数据持久化...

    java监听器实现在线人数统计

    Java监听器实现在线人数统计的知识点主要包括以下几个方面: 1. Java监听器概念:在Java Web应用程序中,监听器是一种特殊的Java类,它可以监听Web应用中的特定事件。这些事件包括:上下文初始化事件、会话创建和...

    ASP.NET实现统计在线人数的程序 附源码

    通过查看和理解这些代码,可以深入学习如何实际实现在线人数统计。 9. **数据库集成**:在大型网站中,可能需要将在线人数存储在数据库中,以便于历史数据分析或持久化存储。这涉及到数据库设计、查询优化以及与ASP...

    people_static.rar_people_在线人数_在线人数统计

    在线人数统计通常是基于客户端和服务器端交互来实现的。当用户打开网页时,客户端会发送一个请求到服务器,服务器记录这个访问,并根据一定的时间间隔更新在线人数。在线人数通常会清除过期的会话,例如,如果用户...

    利用java监听器实现在线人数统计

    随着技术的发展,使用Java语言实现在线人数统计也变得可行,而实现的方式之一就是通过Java的监听器。 监听器是Java Servlet规范中的一部分,它是一种特殊的对象,能够在某些特定的事件发生时得到通知。对于在线人数...

    JSP中的在线人数统计

    为了实现在线人数统计,我们首先需要创建一个监听器类`OnLineDemo.java`,该类实现了`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`接口。 1. **监听器类`OnLineDemo.java`**:...

    SessionManager:Java监听器实现在线人数统计Demo

    总结起来,"SessionManager:Java监听器实现在线人数统计Demo"是一个基于Java Servlet技术的实例,它利用HttpSessionListener监听器来跟踪用户会话的创建和销毁,进而统计在线用户数量。这个过程涉及了Servlet API、...

    在线人数统计 v1.0(Asp.net+ SqlServer)

    实现在线人数统计通常有以下两种方法: - 会话管理:利用ASP.NET的Session对象,每当用户访问页面时,更新其会话状态。定期清理过期会话,存活的会话数量即为在线人数。 - 长轮询或WebSocket:实时通信技术,...

Global site tag (gtag.js) - Google Analytics