如何区分没有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");

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

解决方案 »

  1.   

    看看你的cookies里有没有sessionid ,如果有sessionid但是session不可用就是过期
    如果没有就是压根没有
      

  2.   

    不知道要实现什么功能.但是通常来说 session 过期等效与没有 session
    如果非要区分,你只能根据客户端发送过来的 sessionID 区判断.如果没有 sessionID 那么 session 就是新的.
    如果有那就是曾经访问过服务器.
    我没有使用过 JBoss .但是 在 Tomcat 下,是不可能存在 request.getSession() == null 的
      

  3.   

    只要有请求就有session,问题是session里面的值是否存在而已
      

  4.   

    这个问题其实也就是在servlet 中设置全局变量的问题,如何做到让每次进入该文件都让该变量初始化一次,即firstFlag=true;