怎样遍历当前的Session?

guliang 2003-01-17 02:51:12
我要做一个struct下的用户登录界面,希望实现相通的id不能同时登录的功能。
我想用遍历当前Session的方法来检索用户id,有谁可以告诉我怎么做?
...全文
455 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liucm 2003-01-21
  • 打赏
  • 举报
回复
xycleo()虚竹和尚() 的方法可以
xycleo 2003-01-21
  • 打赏
  • 举报
回复
java.util.Enumeration e = session.getAttributeNames();
while ( e.hasMoreElements() ) {
String sessionName = (String)e.nextElement();
}
fristykily 2003-01-21
  • 打赏
  • 举报
回复
利用数据库标准位来达到目的也是一种方式,但是也存在问题.如果用户意外的掉线就不能在登录了,所以建议采用数据库和listener相结合的方法.下面的方法你可以参考一下,单这个方法也不完美.
package elms.login;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import elms.sql.DBConnection;

/*public class listener extends HttpServlet
{

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/plain");
HttpSession session = request.getSession();
session.setAttribute("stuloginname",new CustomBindingListener(getServletContext()));
session.setAttribute("stuloginname",""+Math.random());
session.setMaxInactiveInterval(5);
}
}*/

public class listener implements HttpSessionBindingListener
{
private ServletContext context;

public listener(ServletContext context)
{
this.context = context;
}

public void valueBound(HttpSessionBindingEvent event)
{

}

//=========================用户权限session过期后取消用户登录状态=============================================
public void valueUnbound(HttpSessionBindingEvent event)
{
try
{
elms.sql.DBConnection conn = new elms.sql.DBConnection();
//System.out.println("ok1");
String stuloginvalue = (String)event.getName();
//System.out.println(stuloginvalue);
//System.out.println("ok2");
String update_sql = "update student_info set Onlinestatus='0' where studentno='"+stuloginvalue+"'";
conn.executeQuery(update_sql);
conn.close();
//System.out.println("ok3");
}
catch(Exception e)
{
//System.out.println(e.getMessage());
}
}
}
在创建session时候进行监听.
session.setAttribute(id,listener);
如果断线在session过期的时候就可以把标准位致回,但在可用性上有一点问题.
airlulu 2003-01-21
  • 打赏
  • 举报
回复
我想楼主的意思是想得到application当前所有创建了的session吧,我以前问过这个问题,没有人回答,看来是不行的。
guliang 2003-01-21
  • 打赏
  • 举报
回复
得到String的SessionName了,就可以对Session遍历了?
firstshui 2003-01-21
  • 打赏
  • 举报
回复
有一事不清,session在什么前提下才可以用?需要用什么与其搭配?
例如上面提到的java.util.Enumeration e = session.getAttributeNames();
它和什么是相对应的啊?
zxhong 2003-01-20
  • 打赏
  • 举报
回复
把session写到动态数组里
用for(int i=0,i<str[].length,i++){}来实现遍历
pqds 2003-01-20
  • 打赏
  • 举报
回复
java.util.Enumeration e = session.getAttributeNames();
while ( e.hasMoreElements() ) {
String sessionName = (String)e.nextElement();
}
这就是你的SESSIONNAME了!
hanty 2003-01-20
  • 打赏
  • 举报
回复
可以用session id进行处理
study_body 2003-01-20
  • 打赏
  • 举报
回复
完全同意 qxjavajava(射手座 =--->新春进步)
gugoo 2003-01-20
  • 打赏
  • 举报
回复
不知道楼上的在写些什么。
theMost 2003-01-17
  • 打赏
  • 举报
回复

没有必要去检索session中用户id,
可以直接用用户名查找session中是否存在用户id来实现。
如下:
String admin_name_session=new String();
String admin_password_session=new String();
try {
admin_name_session=(String)session.getValue("user");
admin_password_session=(String)session.getValue("pws");
if(admin_name_session==null || admin_password_session ==null)
{
//如果没有登陆,则可以登陆。。。。
}
}
catch (Exception t) {
out.println("Session错误:"+t);
}
qxjavajava 2003-01-17
  • 打赏
  • 举报
回复
想用遍历当前Session的方法来检索用户id---------合理吗?

为什么不到数据库中找呢?
teddy_huang 2003-01-17
  • 打赏
  • 举报
回复
up
liwon 2003-01-17
  • 打赏
  • 举报
回复
gz
guliang 2003-01-17
  • 打赏
  • 举报
回复
啊呀,拼错了,应该是struts。

81,092

社区成员

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

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