这是我以前写的这个是监听器代码
package com;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.ServletContext;public class Userinfor implements HttpSessionBindingListener {
// 用户信息 
int userId;
String userName; public void valueBound(HttpSessionBindingEvent event) {

HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
List list = (List) application.getAttribute("userlist");
if (list == null) {
list = new ArrayList();
application.setAttribute("userlist", list);
}
list.add(userName);
application.setAttribute("userlist", list);
}
public void valueUnbound(HttpSessionBindingEvent event) {

HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
List list = (List) application.getAttribute("userlist");
list.remove(userName);
application.setAttribute("userlist", list);
}
public int getUserId() {
return userId;
} public String getUserName() {
return userName;
} public void setUserId(int i) {
userId = i;
} public void setUserName(String string) {
userName = string;
}
}
下面就是在jsp登陆页面里面加代码,这里假设用户登陆判断成功,并且从数据库里取的userId和userName分别放入变量userId和userName里面了
<%@ page import="com.Userinfor"%>
<%
String userName = "";
int userId = 0;   //userId和userName请自己从数据库取数据
if(session.getAttribute("userinfor")==null) {
Userinfor userinfor = new Userinfor();
userinfor.setUserId(userId);
userinfor.setUserName(userName);
session.setAttribute("userinfor",userinfor);
}
%>
接着是打印userlist的JSP页面<%@ page import="java.util.*"%>
<%
List list = (List) application.getAttribute("userlist");
Iterator iter = list.iterator();
if(iter.hasNext()) {
String user = (String)iter.next();
out.print(user);
while(iter.hasNext()) {
user = (String)iter.next();
out.print(user);
}
}%>至于用户是否重复登陆同样可以在userlist里面检索来判断
用户直接关闭IE的话你可以在html的<body>里加入
<body onunload="JavaScript:window.location.href='用于注销的网页url'">

解决方案 »

  1.   

    angelheart写得有道理,应该行得通
      

  2.   

    这就是单点登录问题吗!可以看看相关得资料啊!要是安全得去看看sunOne
    http://docs.sun.com/source/817-4244-10/sso.html
      

  3.   

    你用application对象绝对可以实现,设一个全局静态数组记录当前所有在线用户不就成了嘛。
      

  4.   

    我是ASP转JSP的只改过几个基本的jsp,没接触过class类之类的!!
      

  5.   

    随便找个JAVA IDE编译一下上面的class,再把这个class文件放在网站WEB-INF/classes/com下