package com.oddel.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
// TODO Auto-generated method stub
HttpSession session=event.getSession();
SessionBean sessionBean=SessionFactory.getInstance().getSessionBean();
/**
* 访问次数统计
* */
sessionBean.setAccessCount(sessionBean.getAccessCount()+1);
/**
* 在线人数统计
* */
sessionBean.getOnline().put(session.getId(), null);
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session=event.getSession();
SessionBean sessionBean=SessionFactory.getInstance().getSessionBean();
sessionBean.getLogin().remove(sessionBean.getOnline().get(session.getId()));
sessionBean.getOnline().remove(session.getId());
}
}
package com.oddel.listener;
import javax.servlet.http.HttpSession;
public class SessionFactory {
private static SessionFactory factory;
private SessionBean sessionBean=new SessionBean();
private SessionFactory(){}
static{
factory=new SessionFactory();
}
public synchronized static SessionFactory getInstance() {
if (factory == null) {
factory = new SessionFactory();
}
return factory;
}
public void addLogin(HttpSession session, String user){
this.getSessionBean().getOnline().put(session.getId(), user);
this.getSessionBean().getLogin().add(user);
}
public void removeLogin(HttpSession session, String user){
this.getSessionBean().getLogin().remove(this.getSessionBean().getOnline().get(session.getId()));
this.getSessionBean().getOnline().remove(session.getId());
}
public boolean isOnline(String user){
return this.getSessionBean().getLogin().contains(user);
}
public SessionBean getSessionBean() {
return sessionBean;
}
public void setSessionBean(SessionBean sessionBean) {
this.sessionBean = sessionBean;
}
}
package com.oddel.listener;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class SessionBean {
private Map<String,String> online=new HashMap();//在线
private int accessCount=0;//系统访问人数
private Set<String> login=new HashSet();//已经登录用户
/**
* 返回当前系统在线人数
* @return int
*/
public int getOnlineCount(){
return this.getOnline().size();
}
/**
* 返回当前系统登录人数
* @return int
*/
public int getLoginCount(){
return this.getLogin().size();
}
public Map<String, String> getOnline() {
return online;
}
public void setOnline(Map<String, String> online) {
this.online = online;
}
public int getAccessCount() {
return accessCount;
}
public void setAccessCount(int accessCount) {
this.accessCount = accessCount;
}
public Set<String> getLogin() {
return login;
}
public void setLogin(Set<String> login) {
this.login = login;
}
}
Web.xml添加:
<listener>
<listener-class>
com.oddel.listener.SessionListener
</listener-class>
</listener>
用户登录时调用:
SessionFactory.getInstance().addLogin(httpSession, userid);
页面调用:
import="com.oddel.listener.SessionFactory;
SessionFactory.getInstance().isOnline(userid)
返回true表示用户当前是在线的。
返回false表示用户当前是不在线的。
http://www.xj-zp.com
分享到:
相关推荐
在IT行业中,尤其是在Web开发领域,判断用户是否在线和实时统计在线人数是常见的需求,这有助于提供更好的用户体验和服务。这两个概念通常与Java Web和JSP技术密切相关,涉及到HTTP会话管理和数据结构的运用。 首先...
在JAVA Web开发中,实现在线用户统计是一项关键功能,它能够帮助网站或应用程序的管理员实时了解当前有多少用户正在访问和使用系统。这个“JAVA Web在线用户统计”解决方案显然是强大、好用且简单的,这意味着它可能...
根据提供的文件信息,我们可以分析出该系统通过JSP、Servlet以及Java技术实现了一个简单的在线用户统计功能。下面将从以下几个方面进行详细解析: ### 一、项目架构与技术栈 本项目主要使用了JSP(Java Server ...
在Java编程领域,开发一个在线用户数统计组件是一项常见的任务,尤其对于构建实时Web应用程序和服务至关重要。这个组件的目的是提供一种高效、准确的方式来追踪和显示系统当前活跃的在线用户数量。下面将详细介绍...
在Java Web开发中,统计在线人数是一项常见的需求,它能够帮助我们了解系统当前的活跃用户量。本项目通过实现`HttpSessionListener`接口,每隔一分钟动态更新在线人数,提供了高效且可靠的解决方案。以下是对这个...
这个工具包含了三个关键文件:`java代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`CodeCounter.java`可能是该工具的主要源代码文件,包含了统计逻辑;`MyFilter.java`可能是一个过滤器类,用于筛选...
在Java Web开发中,Session是服务器用来跟踪用户状态的一种机制,尤其在用户登录验证和页面交互统计方面。本文将深入探讨如何使用Servlet和Session来实现用户登录时间和点击页面次数的记录。 首先,让我们理解...
总之,“Java实用组件-在线用户数统计”是一个涵盖了会话管理、数据持久化、缓存操作、任务调度等多个Java核心知识点的实例。通过学习和实践这个例子,开发者可以深入理解如何在实际项目中处理类似问题,提升自己的...
Java Web在线人数统计是Web应用程序中常见的需求,用于获取当前网站活跃用户数量。这个功能的实现通常基于HTTP协议的工作机制,特别是对Session的管理和监听。本文将深入探讨如何使用Java Web技术来监听并统计在线...
提供的文件中,"jsp实现在线人数用户统计.txt"可能是详细实现的代码示例,"blog_49684aa501009nw4.html"可能是关于这个话题的博客文章,而两个".doc"文件可能包含更深入的讨论或案例分析。如果你需要进一步了解这些...
在Java编程中,实现月、日、年、周和访问量统计是一项常见的需求,尤其是在构建数据分析或Web应用中。这通常涉及到数据收集、处理和可视化。以下是一些关键知识点: 1. **日期和时间处理**:Java提供了多种库来处理...
在 `VoteService` 类中,我们可以定义方法来执行以下操作: - 添加新的投票 - 向投票添加选项 - 用户选择投票选项 - 统计投票结果 例如: ```java @Service public class VoteService { @Autowired private ...
在Java Web开发中,统计在线人数是一项常见的...总结,统计Java Web在线人数是一个涉及用户状态管理、并发处理、数据持久化等多个技术领域的综合性问题。选择合适的实现方式取决于项目规模、性能需求以及团队的技术栈。
在这个场景下,监听器用于追踪用户的连接状态,从而提供实时的在线用户数量。 首先,我们要理解Java中的监听器接口。Java AWT和Swing库提供了多种事件监听器接口,如ActionListener、MouseListener等,但这里我们...
### JSP实现在线人数及在线用户统计 #### 知识点概述 在现代Web开发中,统计在线人数和在线用户是十分重要的功能之一,尤其是在构建社区、论坛等交互性强的网站时。通过JSP(JavaServer Pages)可以方便地实现这一...
在网站运营过程中,统计在线人数和访问量是至关重要的数据指标,它们可以帮助我们了解网站的活跃度、用户行为以及优化方向。本主题将详细介绍如何使用Java编程语言来实现这一功能,特别是关注当前年、月、日的访问量...
14、支持用户自定义文件统计类型及统计方法。 15、支持htm,excel,csv,txt等多种存盘文件类型。 16、支持统计结果的直接打印输出。 17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及...
在IT行业中,尤其是在Web开发领域,统计用户停留时间是一个常见的需求,这有助于分析用户行为、优化网站体验以及提升用户粘性。本例子聚焦于使用JavaWeb和JSP技术来实现这一功能,通过实时更新页面显示用户的在线时...
总的来说,"java字数统计程序"这个项目涵盖了Java编程的基础知识,包括输入输出、字符串处理、异常处理、面向对象编程、正则表达式、用户界面设计以及文件操作等多个方面,是学习和巩固Java技术的一个好实践。...
相比其他代码统计工具,如CLOC、PMD等,Java代码统计工具可能具有更直观的用户界面和更专注于Java特性的分析。 五、注意事项 1. 虽然代码行数是衡量项目规模的一个指标,但不应过分依赖,因为复杂的逻辑可能隐藏在...