- 浏览: 1098568 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
一、统计在线人数
1.监听器
说明:实现了HttpSessionListener定义的两个方法:sessionCreated()和sessionDestroyed()。这两个方法可以监听到当前应用中session的创建和销毁情况。
以下两种情况下就会发生sessionDestoryed(会话销毁)事件:
(1)执行session.invalidate()方法时。
(2)如果用户长时间没有访问服务器,超过了会话最大超时时间,服务器就会自动销毁超时的session。
2.web.xml中配置
3.jsp调用
二、统计注册人数
1.监听器
说明:实现了HttpSessionBindingListener接口,接口中共定义了两个方法:valueBound()和valueUnbound(),分别对应数据绑定,和取消绑定两个事件。
所谓对session进行数据绑定,就是调用session.setAttribute()把HttpSessionBindingListener保存进session中。
HttpSessionListener只需要设置到web.xml中就可以监听整个应用中的所有session。HttpSessionBindingListener必须实例化后放入某一个session中,才可以进行监听。
从监听范围上比较,HttpSessionListener设置一次就可以监听所有session,HttpSessionBindingListener通常都是一对一的。
valueUnbound的触发条件是以下三种情况:
(1)执行session.invalidate()时。
(2)session超时,自动销毁时。
(3)执行session.setAttribute("onlineUserListener", "其他对象");或session.removeAttribute("onlineUserListener");将listener从session中删除时。
因此,只要不将listener从session中删除,就可以监听到session的销毁。
2.jsp调用
(1)login.jsp
(2)counter.jsp
三、RequestDispatcher
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法:include/forward。
由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。需要把<jsp:include>翻译为Java code – RequestDispatcher.include();
用法:
<% request.getRequestDispatcher(filename).include(request, response); />
RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。
JSP中的三种页面跳转方式:
1. response.sendRedirect();
2. response.setHeader("location","");
3. <jsp:forward page="" />
1.监听器
package com.logcd.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionCounter implements HttpSessionListener { public void sessionCreated(HttpSessionEvent event) { ServletContext ctx = event.getSession( ).getServletContext( ); Integer numSessions = (Integer) ctx.getAttribute("numSessions"); if (numSessions == null) { numSessions = new Integer(1); }else { int count = numSessions.intValue( ); numSessions = new Integer(count + 1); } ctx.setAttribute("numSessions", numSessions); } public void sessionDestroyed(HttpSessionEvent event) { ServletContext ctx = event.getSession( ).getServletContext( ); Integer numSessions = (Integer) ctx.getAttribute("numSessions"); if (numSessions == null) { numSessions = new Integer(0); } else { int count = numSessions.intValue( ); numSessions = new Integer(count - 1); } ctx.setAttribute("numSessions", numSessions); } }
说明:实现了HttpSessionListener定义的两个方法:sessionCreated()和sessionDestroyed()。这两个方法可以监听到当前应用中session的创建和销毁情况。
以下两种情况下就会发生sessionDestoryed(会话销毁)事件:
(1)执行session.invalidate()方法时。
(2)如果用户长时间没有访问服务器,超过了会话最大超时时间,服务器就会自动销毁超时的session。
<session-config> <session-timeout>1</session-timeout> </session-config>时间单位是一分钟,并且只能是整数,如果是零或负数,那么会话就永远不会超时。
2.web.xml中配置
<listener> <listener-class>com.logcd.listener.SessionCounter</listener-class> </listener>
3.jsp调用
目前共有<span class="salient"> <%=application.getAttribute("numSessions")%> </span>人在线
二、统计注册人数
1.监听器
package com.logcd.listener; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class OnlineUserBindingListener implements HttpSessionBindingListener{ private String userId; private String userName; public OnlineUserBindingListener(String userId,String username){ this.setUserId(userId); this.setUserName(userName); } @SuppressWarnings("unchecked") public void valueBound(HttpSessionBindingEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 把用户放入在线列表 Map onlineUserList = (Map) application.getAttribute("onlineUserList"); // 第一次使用前,需要初始化 if (onlineUserList == null) { onlineUserList = new HashMap(); application.setAttribute("onlineUserList", onlineUserList); } onlineUserList.put(this.userId, this.userName); } public void valueUnbound(HttpSessionBindingEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 从在线列表中删除用户 Map onlineUserList = (Map) application.getAttribute("onlineUserList"); onlineUserList.remove(this.userId); } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
说明:实现了HttpSessionBindingListener接口,接口中共定义了两个方法:valueBound()和valueUnbound(),分别对应数据绑定,和取消绑定两个事件。
所谓对session进行数据绑定,就是调用session.setAttribute()把HttpSessionBindingListener保存进session中。
HttpSessionListener只需要设置到web.xml中就可以监听整个应用中的所有session。HttpSessionBindingListener必须实例化后放入某一个session中,才可以进行监听。
从监听范围上比较,HttpSessionListener设置一次就可以监听所有session,HttpSessionBindingListener通常都是一对一的。
valueUnbound的触发条件是以下三种情况:
(1)执行session.invalidate()时。
(2)session超时,自动销毁时。
(3)执行session.setAttribute("onlineUserListener", "其他对象");或session.removeAttribute("onlineUserListener");将listener从session中删除时。
因此,只要不将listener从session中删除,就可以监听到session的销毁。
2.jsp调用
(1)login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@ page import="com.logcd.listener.OnlineUserBindingListener"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; String userId = "2000090603"; String userName = "LogCN"; session.setAttribute(userId,userName); session.setAttribute("onlineUserBindingListener", new OnlineUserBindingListener(userId,userName)); response.sendRedirect("counter.jsp"); %>
(2)counter.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> 注册用户<span class="salient"><%=((Map)application.getAttribute("onlineUserList")).size()%> </span> 人
三、RequestDispatcher
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法:include/forward。
由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。需要把<jsp:include>翻译为Java code – RequestDispatcher.include();
用法:
<% request.getRequestDispatcher(filename).include(request, response); />
RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。
JSP中的三种页面跳转方式:
1. response.sendRedirect();
2. response.setHeader("location","");
3. <jsp:forward page="" />
发表评论
-
使用zxing.jar生成二维码
2015-10-15 13:52 01、ZxingCodeUtils /** * 使用Zx ... -
Java生成条形码与二维码
2015-09-29 11:02 0一、一维条形码 /** * 利用jbarcode.ja ... -
将html特殊码( &#x)转换成字符
2015-06-09 11:54 0public static void main(St ... -
Java多线程编程
2013-10-16 13:45 0一、线程安全的延迟初始化 1、基于volatile的双重检查锁 ... -
Java常用方法整理
2013-06-13 16:00 01、判断是否为中文字符 /** * 判断是否为中文 ... -
使用servicemix实现FTP连接池
2013-06-13 13:17 0一、配置文件 <?xml version=" ... -
嵌入式运行HttpServer
2015-06-30 13:14 1749一、嵌入式运行Jetty并提供上传文件功能 1、定义处理请求的 ... -
使用Quartz执行定时任务
2012-05-24 11:00 0一、在application中运用 (1)定义任务 pac ... -
Java内存泄漏分析与解决方案
2012-03-18 13:49 0作为Internet最流行的编程语言之一,Java现正非常 ... -
java访问FtpSever
2011-10-09 15:18 0使用apache common-net包来实现。 ... -
JNI(Java Native Interface)的使用
2015-06-30 13:12 3267Java JNI是Java Native Interf ... -
Java Regular Expressions Syntax
2009-07-22 20:54 3073一、正则表达式语法 1. ... -
jsp custom taglib
2009-07-10 12:20 01.java文件 public class Repeate ... -
java filter
2009-07-10 12:13 17302过滤器Filter也具有生命周期:init()-> ... -
HTTP 头部详细解释
2009-07-09 11:46 01. Accept:告诉WEB服务器 ... -
JavaMail读发邮件
2009-07-07 14:04 6293一、基本概念: SMTP(Simple Mail Tra ... -
java 验证码/Checked vs UnChecked Exception
2009-06-15 10:54 2298<一>、Java生成验证码图片 1.Servlet ... -
Java TimeZone
2009-04-15 16:32 28923protected static Format form ... -
JPA是什么
2009-03-28 18:59 2431JPA全称为Java Persiste ... -
用dom4j读写xml
2009-03-18 21:57 3571一、例子 public class XML ...
相关推荐
在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 实现在线人数统计功能,以便展示当前在线的用户数量。我们将分析提供的代码段,并解释关键概念和技术。 首先,我们有一个名为`onLineUser`的类,它实现了`...
在Java JSP(JavaServer Pages)环境中,统计在线人数是一项常见的需求,这通常涉及到服务器端的会话管理、数据持久化以及实时性处理。这里我们将深入探讨如何利用JSP技术来实现这一功能。 首先,我们需要理解JSP的...
### JSP与在线人数统计 JSP是一种基于Java的技术,它允许在HTML页面中嵌入Java代码,从而实现动态网页的生成。JSP可以访问Java后端资源,执行复杂的业务逻辑,并将结果返回给前端展示。在线人数统计正是一个结合了...
本文将基于给定的代码片段和描述,详细介绍如何利用JSP技术来实现在线人数和在线用户的统计。 #### 关键技术介绍 1. **JSP (JavaServer Pages)** - JSP是一种基于Java技术的服务器端脚本语言,它允许在HTML页面中...
根据给定文件的信息,我们可以总结出以下关于使用 JSP 实现在线用户人数统计的知识点: ### 1. **实现原理** 在线人数统计主要是通过利用 `HttpSession` 的生命周期事件来实现。每当一个新用户访问网站时,服务器会...
通过学习这个JSP在线人数统计程序示例,你可以深入了解如何在JSP中使用Session进行状态管理,并且掌握如何设计和实现一个基本的在线人数统计功能。这将有助于提升你的Web开发技能,更好地应对实际项目的需求。
### JSP实现在线人数统计的知识点解析 #### 一、项目背景与目标 在Web应用开发中,了解网站的实时在线用户数量对于优化资源分配、提高用户体验等方面具有重要意义。本项目的目标是通过JSP(JavaServer Pages)技术...
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)技术来实现一个简单的页面访问人数统计的功能。这个功能对于初学者来说是一个很好的实践项目,能够帮助他们更好地理解和运用JSP的基本原理。我们将讨论以下...
JSP要想要实时的监控在线人数只能通过session监听来完成,当浏览器关闭的时马上触发事件让session值实时减1,本事例具有完整的JSP在线人数统计,访问次数,用eclipse工具打开或直接copy至Tomcat上就可以运行..
以上就是使用JSP实现在线人数统计的基本方法和关键点,具体实现可能需要根据项目需求和环境进行调整。在实际开发中,还要考虑到性能、可扩展性和用户体验等因素,确保统计的准确性和系统的稳定性。
在本项目中,JSP可能被用来展示在线人数和注册人数的数据。\n\n2. **Servlet**\n Servlet是Java中的一个接口,用于扩展服务器的功能。它接收并响应HTTP请求,通常用于处理业务逻辑和数据操作。在统计在线人数时,...
### JSP中的在线人数统计 #### 一、引言 在Web开发中,统计在线人数是一种常见的需求,尤其是在社交网络、论坛或者任何需要实时显示在线用户数量的应用场景中尤为重要。本文将详细介绍如何在JSP(JavaServer Pages...
jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。
在开发Java Web应用程序时...总之,通过JSP、Servlet和session监听器,我们可以有效地统计和展示Java Web应用的实时在线人数。然而,实际应用中还需要考虑更多因素,如性能优化、用户体验以及更准确的在线状态判断等。
通过上述分析,我们可以看出这是一个利用JSP、Servlet和Java技术构建的简单在线人数统计系统。它不仅实现了基本的用户登录验证功能,还通过监听用户的在线状态来实时更新在线人数,提供了一种较为实用的解决方案。...
本系统完全基于JSP(JavaServer Pages)技术,提供了一系列核心功能,包括网站计数器、用户停留时间统计、实时在线人数统计以及网站访问量统计。本文将深入探讨这些功能的实现原理及应用价值。 首先,网站计数器是...
总之,利用JSP的application对象进行在线人数统计是一个简单直观的方法,适用于小型和中型Web应用。在实际应用中,开发者需要根据具体需求和场景选择合适的统计策略,并处理可能出现的各种问题。通过学习和理解上述...
为了运行此项目,你需要将其部署到支持JSP和Servlet的Web服务器,如Tomcat或Jetty上,并通过浏览器访问对应的URL来查看在线人数统计结果。 总的来说,"ex.zip_JSP在线人数统计_ex"项目提供了从监听器到JSP页面的...
count.jsp 统计在线人数
5. **显示在线人数**:你可以创建一个Servlet或JSP页面,实时显示当前在线人数。这可以通过访问一个全局维护的在线用户计数器或者查询数据库中的统计信息来实现。 6. **优化与注意事项**:为了防止因用户关闭浏览器...