使用servlet的listener ,在用户超时时,它的session自然也被destroy,在里面写一些从当前用户列表中删除的操作语句。

解决方案 »

  1.   

    很容易啊~~~session里面放个变量 time ,记录最后一次回复消息的时间 ,客户端反正定时刷新页面的,你只要在有刷新的地方加入了判断就行了
    int x = 0;  //设定时间,注意单位是毫秒
    Date time = (Date)request.getSession().getAttribute("time");
    Date now = new Date();
    if(now.getTime()-time.getTime()>x) response.sendRedirect("/index.jsp");
      

  2.   

    用session监听是不可能跳转页面的,至少我不会。。如果你谁的话请指教!!
      

  3.   

    以下是维护在线用户列表的/*
     * 创建日期 2004-8-21
     *
     * 
     * 
     */
    package com;/**
     * @author WuBin
     *
     * 
     * 
     */
    import java.util.*;
    import javax.servlet.http.*;
    import javax.servlet.ServletContext;public class Userlist 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 void printUserlist(ServletContext application) {

    List list = (List) application.getAttribute("userlist");
    Iterator iter = list.iterator();
    if(iter.hasNext()) {
    String user = (String)iter.next();
    System.out.print(user);
    while(iter.hasNext()) {
    user = (String)iter.next();
    System.out.print(user);
    }

    }
    } public int getUserId() {
    return userId;
    } public String getUserName() {
    return userName;
    } public void setUserId(int i) {
    userId = i;
    } public void setUserName(String string) {
    userName = string;
    }}在用户登陆的时候记得把上面的对象实例话后放入session
    <%@ 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);
    }
    %>