怎样遍历当前的Session? 啊呀,拼错了,应该是struts。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 想用遍历当前Session的方法来检索用户id---------合理吗?为什么不到数据库中找呢? 没有必要去检索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(射手座 =--->新春进步) java.util.Enumeration e = session.getAttributeNames();while ( e.hasMoreElements() ) { String sessionName = (String)e.nextElement();}这就是你的SESSIONNAME了! 把session写到动态数组里用for(int i=0,i<str[].length,i++){}来实现遍历 得到String的SessionName了,就可以对Session遍历了? 我想楼主的意思是想得到application当前所有创建了的session吧,我以前问过这个问题,没有人回答,看来是不行的。 利用数据库标准位来达到目的也是一种方式,但是也存在问题.如果用户意外的掉线就不能在登录了,所以建议采用数据库和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过期的时候就可以把标准位致回,但在可用性上有一点问题. java.util.Enumeration e = session.getAttributeNames();while ( e.hasMoreElements() ) { String sessionName = (String)e.nextElement();} xycleo()虚竹和尚() 的方法可以 有一事不清,session在什么前提下才可以用?需要用什么与其搭配?例如上面提到的java.util.Enumeration e = session.getAttributeNames();它和什么是相对应的啊? jsp的两个小问题 跟帖有分 想找一个jsp用户登录模块的例子 用javamail获得某一指定邮件 使用JavaScript修改百度首页 out.println() 的问题... 登录页面时,为何弹出来的登录框不是显示在最顶层 hibernate mysql 插入多行出错 打印页面的时候为什么纸张最下面一行会出现网址和日期?怎么去掉啊 请老鸟给一个学习jsp的学习指导! 学jsp和tomcat又遇到了麻烦 急:怎样解决登陆后,使其 后退、前进 失效! 如何设置tomcat的连接数量?
没有必要去检索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);
}
while ( e.hasMoreElements() ) {
String sessionName = (String)e.nextElement();
}
这就是你的SESSIONNAME了!
用for(int i=0,i<str[].length,i++){}来实现遍历
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过期的时候就可以把标准位致回,但在可用性上有一点问题.
while ( e.hasMoreElements() ) {
String sessionName = (String)e.nextElement();
}
例如上面提到的java.util.Enumeration e = session.getAttributeNames();
它和什么是相对应的啊?