Jsp使用HttpSessionBindingListener实现在线人数记录
2018-07-20 来源:open-open
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则不能使用这种方式记录在线人数。
标签: 服务器
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:Java解析XML文件
下一篇:java使用SAX解析xml
最新资讯
热门推荐