如何区分没有session和session过期

sz老梁 2009-07-24 04:07:37
如何区分没有session和session过期啊?
工程的一个Application的文件中是这样写的:

RequestContext context = createRequestContext(request, response);
IEngine engine = getEngine(context);
HttpSession session = context.getSession();
// 登陆用户唯一性判断
if (session != null) {
...
}else{
super.doService(request, response);
}



这样写的话,当它session过期后就会抛异常;
所以我在else中改为如下代码:

if(firstFlag){
super.doService(request, response);
firstFlag=false;
}else{
request.getSession(true).removeAttribute(ConstantPageName.SESSION_USERID);
firstFlag=true;
response.sendRedirect("app?service=page/SessionTimeOut");

}

firstFlag 是我设置的一个全局的参数:
private static boolean firstFlag = true;

这样做会造成一个问题,因为这个文件时Application级的文件,每个用户登录都会访问这个文件,
当A登录时,程序会跑

if(firstFlag){
super.doService(request, response);
firstFlag=false;
}

这一段,这时firstFlag被置为false,
接着B登录时,因为firstFlag为false,所以程序会跑

else{
request.getSession(true).removeAttribute(ConstantPageName.SESSION_USERID);
firstFlag=true;
response.sendRedirect("app?service=page/SessionTimeOut");

}

这样就会有问题的!
有谁帮我解答不??

...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sz老梁 2009-07-27
  • 打赏
  • 举报
回复
这个问题其实也就是在servlet 中设置全局变量的问题,如何做到让每次进入该文件都让该变量初始化一次,即firstFlag=true;
fengmy123 2009-07-25
  • 打赏
  • 举报
回复
只要有请求就有session,问题是session里面的值是否存在而已
java_2008_4_4 2009-07-24
  • 打赏
  • 举报
回复
不知道要实现什么功能.但是通常来说 session 过期等效与没有 session
如果非要区分,你只能根据客户端发送过来的 sessionID 区判断.如果没有 sessionID 那么 session 就是新的.
如果有那就是曾经访问过服务器.
我没有使用过 JBoss .但是 在 Tomcat 下,是不可能存在 request.getSession() == null 的
zuguanqun 2009-07-24
  • 打赏
  • 举报
回复
看看你的cookies里有没有sessionid ,如果有sessionid但是session不可用就是过期
如果没有就是压根没有

62,614

社区成员

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

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