Jsp使用HttpSessionBindingListener实现在线人数记录
onLineUser.java 继承HttpSessionBindingListener实现在线人数记录功能
- package com.trs;
- import java.util.*;
- import javax.servlet.http.*;
- import javax.servlet.*;
- /**
- *HttpSessionBindingListener接口有两方需要实现的方法:
- *public synchronized void valueBound(HttpSessionBindingEvent httpsessionbindingevent)
- *public synchronized void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent)
- *Session创建的时候Servlet容器将会调用valueBound方法;Session删除的时候则调用valueUnbound方法.
- */
- public class onLineUser implements HttpSessionBindingListener
- {
- public onLineUser()
- {
- }
- //保存在线用户的向量
- private Vector users=new Vector();
- //得到用户总数
- public int getCount()
- {
- users.trimToSize();
- return users.capacity();
- }
- //判断是否存在指定的用户
- public boolean existUser(String userName)
- {
- users.trimToSize();
- boolean existUser=false;
- for (int i=0;i
- {
- if (userName.equals((String)users.get(i)))
- {
- existUser=true;
- break;
- }
- }
- return existUser;
- }
- //删除指定的用户
- public boolean deleteUser(String userName)
- {
- users.trimToSize();
- if(existUser(userName))
- {
- int currUserIndex=-1;
- for(int i=0;i
- {
- if(userName.equals((String)users.get(i)))
- {
- currUserIndex=i;
- break;
- }
- }
- if (currUserIndex!=-1)
- {
- users.remove(currUserIndex);
- users.trimToSize();
- return true;
- }
- }
- return false;
- }
- //得到当前在线用户的列表
- public Vector getOnLineUser()
- {
- return users;
- }
- public void valueBound(HttpSessionBindingEvent e)
- {
- users.trimToSize();
- if(!existUser(e.getName()))
- {
- users.add(e.getName());
- System.out.print(e.getName()+"\t 登入到系统\t"+(new Date()));
- System.out.println(" 在线用户数为:"+getCount());
- }else
- System.out.println(e.getName()+"已经存在");
- }
- public void valueUnbound(HttpSessionBindingEvent e)
- {
- users.trimToSize();
- String userName=e.getName();
- deleteUser(userName);
- System.out.print(userName+"\t 退出系统\t"+(new Date()));
- System.out.println(" 在线用户数为:"+getCount());
- }
- }
logout.jsp
- <%@ page contentType="text/html;charset=GB2312" pageEncoding="GBK"%>
- <%@ page import="com.trs.onLineUser,java.util.*" %>
- <jsp:useBean id="onlineuser" class="com.trs.onLineUser" scope="application"/>
- <html>
- <head>
- <title>show</title>
- </head>
- <body>
- <%
- String name=(String)session.getValue("name");
- if(name!=null && name.length()!=0)
- {
- if(onlineuser.deleteUser(name))
- out.println(name+"已经退出系统!");
- else
- out.println(name+"没有登陆到系统!");
- }
- %>
- </body>
- </html>
online.jsp
- <%@ page contentType="text/html;charset=GB2312" pageEncoding="GBK"%>
- <%@page import="com.trs.onLineUser,java.util.*" %>
- <html>
- </body>
- <%
- String name=request.getParameter("name");
- String password=request.getParameter("password");
- if(name!=null && password!=null)
- {
- Cookie cookie1=new Cookie("name", name);
- cookie1.setMaxAge(100000);
- response.addCookie(cookie1);
- Cookie cookie2=new Cookie("password", password);
- cookie2.setMaxAge(100000);
- response.addCookie(cookie2);
- out.println("完成书写Cookie!");
- }
- else
- {
- out.println("书写失败!");
- }
- %>
- </body>
- </html>
需要说明的是这种方式适合只有单台服务器的小网站使用,如果网站有多台web server则不能使用这种方式记录在线人数。
Jsp使用HttpSessionBindingListener实现在线人数记录的更多相关文章
- 用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
在线人数统计方面的实现,最初我的想法是,管理session,如果session销毁了就减少,如果登陆用户了就新增一个,但是如果是用户非法退出,如:未注销,关闭浏览器等,这个用户的session是管理不 ...
- [转]用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
原文链接:http://www.cnblogs.com/shencheng/archive/2011/01/07/1930227.html 下午比较闲(其实今天都很闲),想了一下在线人数统计方面的实现 ...
- Java遇见HTML——JSP篇之商品浏览记录的实现
一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ...
- springMVC笔记:jsp页面获取后台数据记录列表
1.读取数据库中的记录List<HashMap<String,String>> attributes; 2.Controller构造Model如下: @RequestMappi ...
- JSP标签使用的代码记录——《%= %》(神奇的CSDN为啥标题不让打英文的尖括号)
关于JSP的一些标签,在用到的时候有些生疏,就去找了找资源重新温习了一下. 附上两个JSP<%= %>标签的博客,同时也记录当前项目里用到的方法. jsp页面中<%@ %>.& ...
- jsp简单实现统计在线人数
通过重写HttpSessionListener接口实现 //session操作类 public class SessionMap { private static Map<String,Http ...
- jsp利用application统计在线人数的方法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- 用jsp的application写一个记录用户登陆网站的数量
</head><body><%int i = 0;Object number = application.getAttribute("num");if ...
- jsp内置对象学习记录
1.session,是一个会话保留在服务器端的对象(默认保留时间为30分钟),所以我们可以在session里面放用户信息以便后续的访问便利(缺点:cookie劫持,导致用户数据泄露).案例:(1)同个 ...
随机推荐
- CSS 笔记——列表表格
6. 列表表格 -> 列表 (1)list-style 基本语法 list-style : list-style-image || list-style-position || list-sty ...
- 「CSA49」Card Collecting Game
「CSA49」Card Collecting Game 题目大意:有 \(n\) 种卡片,每种有 \(b_i\) 张,如果一个人集齐 \(k\) 张第 \(i\) 种卡片,那么其能获得的得分是 \(\ ...
- bzoj1977 次小生成树
Description 小 C 最近学了很多最小生成树的算法,Prim 算法.Kurskal 算法.消圈算法等等. 正当小 C 洋洋得意之时,小 P 又来泼小 C 冷水了.小 P 说,让小 C 求出一 ...
- 2015 UESTC 搜索专题N题 韩爷的梦 hash
韩爷的梦 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Descrip ...
- CodeM资格赛1
题目描述 美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究.他有两段音频,每段音频是一个表示音高的序列.现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分. 具体地说,就是在第二段音频中找到一 ...
- mysqldump之字符集问题解决
最近导数据的需求真多,年底了大家都要做分析吗?近期使用mysqldump导出的中文出现乱码问题. mysqldump -uroot -ppassword -S /tmp/mysql9991.sock ...
- 帝国cms安装在二级目录 构建中英文网站
帝国cms是很好的建站工具,一般都是安装在根目录,但是有时候租一个空间,要搭建两个网站,或者中英文双语的网站,肯定得用到二级目录 帝国cms安装二级目录步骤 1,讲安装包解压缩到要安装的二级目录下 2 ...
- HTML、XML、XHTML 有什么区别?
HTML即是超文本标记语言(Hyper Text Markup Language),是最早写网页的语言,但是由于时间早,规范不是很好,大小写混写且编码不规范,是语法较为松散的.不严格的Web语言 XH ...
- OSChina.net 的 Tomcat 配置 server.xml 参考
这是目前 oschina.net 正在使用的 tomcat 的 server.xml 的配置文件内容 <Server port="9005" shutdown="S ...
- nodejs之处理GET请求
一个简单的httpserver.接收get请求,并返回解析之后的数据. 以下是服务的代码: var http = require("http"); var url = requir ...