Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Jsp在线人数统计 - 实现后台强制前台某个用户退出
【标  题】:Jsp在线人数统计 - 实现后台强制前台某个用户退出
【关键字】:Jsp
【来  源】:http://blog.csdn.net/smildlzj/archive/2006/09/17/1232676.aspx

Jsp在线人数统计 - 实现后台强制前台某个用户退出

Your Ad Here

这是一个笨方法..我知道Tomcat内部有可以得到系统session的方法..但是我的能力没法得到相关的类...如果有高手看到这里....知道的话告诉下小弟....

 

CountOnLineUser.java
 /*
Power By 24COMIC
Design:LULU

原理
构建监听器,当有session名称为jvod_user被建立,触发监听器,调用方法
读取application中名为OLU的HashMap对象,每个HashMap的值我的程序中是一个UserItem对象
将用户session的sessionId增加到OLU中....put(用户名,sessionId)
再将整个HashMap对象保存到application中...

当用户sessiong过期或者销毁,,就删除OLU中的对象健值

e-mail:smildlzj@hotmail.com
*/

package com.jvod.System;
import java.util.HashMap;

import javax.servlet.*;
import javax.servlet.http.*;

import com.jvod.item.UserItem;

public class CountOnLineUser implements HttpSessionAttributeListener
{
 public CountOnLineUser()
 {
  //System.out.println("-------init count");
 }
 public void attributeAdded(HttpSessionBindingEvent se)
 {
  try{
   //System.out.println("-------se.getName():"+se.getName());
  if(se.getName().equals("jvod_user"))
  {
   HttpSession session=se.getSession();
   //System.out.println("-------session创建:"+session.getId());
   ServletContext sc = session.getServletContext();
   HashMap OLU=(HashMap)sc.getAttribute("OnLineUser");
   UserItem userItem=(UserItem)se.getValue();
   if(userItem!=null)//为已登录用户
   {
    if(OLU.get(userItem.getName())!=null)//之前已经重复登录
    {
     //得到之前的sessionId
     String SessionId=(String) OLU.get(userItem.getName());
     //销毁该用户在别处登录的session
     //call remove
     //System.out.println("-------call remove same session");
     SessionManage SM=new SessionManage();
     SM.setServletContext(sc);
     //System.out.println("-------result of remove:"+SM.SessionRemove(SessionId));
    }
   
    //增加新sessionId
    OLU.put(userItem.getName(),session.getId());
    sc.setAttribute("OnLineUser",OLU);
   }
  }
  }catch(Exception e){
   System.out.println(e.toString());
  }
  
 }

 public void attributeRemoved(HttpSessionBindingEvent se)
 {
  try{
   if(se.getName().equals("jvod_user"))
   {
    HttpSession session=se.getSession();
    //System.out.println("-------session销毁:"+session.getId());
    ServletContext sc = session.getServletContext();
    HashMap OLU=(HashMap)sc.getAttribute("OnLineUser");
    UserItem userItem=(UserItem)se.getValue();
    if(userItem!=null)//为已登录用户
    {
     OLU.remove(userItem.getName());
     sc.setAttribute("OnLineUser",OLU);
    }
   }
  }catch(Exception e){
   System.out.println(e.toString());
  }
 }

 public void attributeReplaced(HttpSessionBindingEvent arg0) {
  // TODO Auto-generated method stub
  
 }

}

然后用java.net.HttpURLConnection模拟客户端

public boolean SessionRemove(String sessionId)
 {
  try{

..................
URL url = new URL(前台用户销毁session页面)
HttpURLConnection conn = null;
conn=(HttpURLConnection)url.openConnection();|
conn.setRequestProperty("Cookie", "JSESSIONID="+sessionId+";"); //设置用户的session id

.......

}

发送用户session,模拟客户端访问含有session.removeAttribute("jvod_user");的页面即可完成强制退出功能

 

后台页面就是读取application中的OLU对象遍历HashMap得到用户列表...和sessionID,处理退出的页面就调用以上函数就可以了...

 

AJAX开发:【上一篇】
JSF如何实现列表多选:【下一篇】
【相关文章】
  • 图解JSP环境安装配置
  • Windows下jsp、servlet和javabean的配置
  • 构造Jspjavabean开发和发布环境的简单办法
  • JAVA/JSP学习
  • 时代互联虚拟主机,支持ASP空间,ASP.NET空间,JAVA空间,JSP空间,PHP空间
  • freebsd6.1 下整合安装apache22和resin3实现jsp功能
  • JSP+SQLSERVER
  • jsp/servlet重定向技术
  • 在jsp中使用FCKeditor的一个错误
  • 关于jsp中的分页技术
  • 【随机文章】
  • Qemu使用Bridge模式让虚拟机和主系统互访和上网
  • HTML Component(HTC)学习之二
  • 架设linux下最简单的VPN系统[转载]
  • ASP+配置 — ASP+配置概念(二)
  • 想了解去斑方法如何去斑怎样去斑美容去斑美白去斑方法
  • ORA-01113 解决办法
  • 在LINUX中实现流量控制器
  • Installing and configuring Exim 4 on Debian
  • 《Windows Heap 溢出利用》一文学习笔记 上
  • Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL + IMP 完全指南(11)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.