如何检查会话是不是存在?

Posted

技术标签:

【中文标题】如何检查会话是不是存在?【英文标题】:How to check if session exists or not?如何检查会话是否存在? 【发布时间】:2011-02-18 13:58:08 【问题描述】:

我正在使用

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:
if(null == session.getAttribute("name"))  
  // User is not logged in.  
else  
  // User IS logged in.  
  

【讨论】:

【参考方案3】:

如果你想在创建之前检查这个,那么这样做:

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) 的作用相同。

【讨论】:

【参考方案4】:

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

参数:create - 如有必要,为该请求创建一个新会话;如果没有当前会话,则返回 null

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

【讨论】:

...最好的解释恕我直言...指的是文档并保持专注。【参考方案5】:

HttpSession 会话 = request.getSession(true); 如果 (session.isNew()) ...做一点事 别的 ……做点别的

.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

干杯, 约根

【讨论】:

您必须将false 传递给第二个.getSession()

以上是关于如何检查会话是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JSTL 检查会话中是不是存在已登录用户?

使用 AJAX 检查 PHP 会话是不是存在或过期

检查会话是不是存在 JSF

检查 Laravel 5.1 中是不是存在会话密钥?

如何在 Codeigniter 中检查是不是设置了会话?

如何检查会话是不是无效