请问怎样用最简单的代码判断一个用户是否在线?

sunwatch 2004-08-20 07:34:01
一个用户登陆后,创建一个session,(在这里这个session名是唯一的,不存在重名session),他退出(调用distroy session)或关闭internet explore后session失效。在已知该用户的session名,怎么样在一个jsp页面里判断他是否在线。(即这个session没有失效)。代码最好能够简单写。最好不涉及servlet。
...全文
389 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
AgathaZ 2004-08-23
  • 打赏
  • 举报
回复
angelheart()的不错!
spiritsl 2004-08-23
  • 打赏
  • 举报
回复
to:angelheart(),支持,支持
ybsoft 2004-08-23
  • 打赏
  • 举报
回复
用SERVLET来判断 SESSION是否有效
angelheart 2004-08-23
  • 打赏
  • 举报
回复
这个是监听器代码
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);
}
}

%>
bluesky35 2004-08-23
  • 打赏
  • 举报
回复
可以用session实现
sunwatch 2004-08-23
  • 打赏
  • 举报
回复
可以给出代码吗?
sunwatch 2004-08-23
  • 打赏
  • 举报
回复
多谢
sunwatch 2004-08-22
  • 打赏
  • 举报
回复
各位我的意思是管理员在任意一台电脑上通过访问jsp页面就可以知道一个会员是否在线,而不是一个人登陆后在自己的电脑上看自己的session是否有效。可以吗?
angelheart 2004-08-22
  • 打赏
  • 举报
回复
可以啊~~~不过还是要做监听器维护userlist的~~~JSP页面负责把在线的userlist打印出来
suntmbxh 2004-08-21
  • 打赏
  • 举报
回复
用session 是用来跟踪客户的,比如可以判断哪个客户在访问此网页,但要判断一个用户是否在线,(只能判断他是否已经登录并且没有注销,但在session失效之前他已经走了,那就谁也没办法了) 你可以在他的登录表中添加一个字段,当他登录时,置1,注销或session失效时就置0,你只要查看这个字段就可以判断有多少人在线了,或查看谁在线,
cdsun 2004-08-21
  • 打赏
  • 举报
回复
mark
dawangzi16 2004-08-21
  • 打赏
  • 举报
回复
up
fastrunner2003 2004-08-20
  • 打赏
  • 举报
回复
package net.wuban.util;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class SessionListener
implements HttpSessionBindingListener
{

public SessionListener()
{
IsOnline = false;
}

public boolena getIsOnline()
{
return IsOnline;
}

public void valueBound(HttpSessionBindingEvent httpsessionbindingevent)
{
IsOnline = true;
}

public void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent)
{
IsOnline = false;
}

private boolean IsOnline;
}

在jsp页面
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="net.wuban.util.*"%>

<%
ServletContext sct =getServletConfig().getServletContext();
if((SessionListener)sct.getAttribute("SessionListner")==null)
{
SessionListener sessionListener1=new SessionListener();
sct.setAttribute("SessionListner",sessionListener1);
}
session.setAttribute("SessionListner",(SessionListener)sct.getAttribute("SessionListner"));
%>
<%
SessionListener sl=(SessionListener)session.getAttribute("SessionListner");
out.print(s1.getIsOnline()?"Online":"Offline");
%>
angelheart 2004-08-20
  • 打赏
  • 举报
回复
如果是服务器想主动判断用户是否在线的话不可能在jsp里面判断的,既然他向服务器发送Request请求,就说明他在线,如果session.getAttribute("uesrname")此时为null的话只能说明他页面闲置时间太长了导致session失效

如果楼主只是想判断session是否有效的话,只要在登陆JSP页面里面调用session.setAtteribute("uesrname",uesrname),再在其它JSP页面用session.getAttribute("uesrname")做判断就行了
张海霖 2004-08-20
  • 打赏
  • 举报
回复
if (session("username")!=""){}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧