如何检查会话是否存在?

时间:2010-05-12 11:19:13

标签: java session servlets

我正在使用

创建会话
HttpSession session = request.getSession();

在创建会话之前,我想检查它是否存在。我该怎么做?

5 个答案:

答案 0 :(得分:34)

如果您想在创建之前检查此,请执行以下操作:

HttpSession session = request.getSession(false);
if (session == null) {
    // Not created yet. Now do so yourself.
    session = request.getSession();
} else {
    // Already created.
}

如果您不想在创建后检查此,那么您也可以这样做:

HttpSession session = request.getSession();
if (session.isNew()) {
    // Freshly created.
} else {
    // Already created.
}

保存一行和booleanrequest.getSession()request.getSession(true)的作用相同。

答案 1 :(得分:21)

有一个函数request.getSession(boolean create)

  

<强>参数:
  create - 如果需要,可以为此请求创建新会话;如果没有当前会话,则返回false

因此,如果会话不存在,您可以简单地传递false告诉getSession返回null。

答案 2 :(得分:4)

if(null == session.getAttribute("name")){  
  // User is not logged in.  
}else{  
  // User IS logged in.  
}  

答案 3 :(得分:3)

HttpSession session = request.getSession(true);     if(session.isNew()){       ...做一点事     } else {       ......做点别的事     }

.getSession(true)告诉java创建一个新会话(如果不存在)。

你当然也可以这样做:

if(request.getSession(false) != null){
    HttpSession session = request.getSession();
}

查看:http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html

欢呼声, 耶尔

答案 4 :(得分:3)

我想补充一点,如果您为每个连接到您网站的新用户创建一个新会话,那么您的表现将受到重创。使用request.getSession(false)检查用户是否有会话。使用此方法,如果要根据用户是否经过身份验证来呈现视图,则不会创建新会话。