如何检查会话是否存在?

问题描述 投票:0回答:5

我正在使用

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

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

java session servlets
5个回答
41
投票

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

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. }

这样可以节省一行和一个

boolean

request.getSession()
request.getSession(true)
 的作用相同。


23
投票
有一个功能

request.getSession(boolean create)



参数:
create

 - true 则在必要时为此请求创建一个新会话;如果当前没有会话,则 false 返回 null 

因此,您可以简单地传递

false

 来告诉 
getSession
 如果会话不存在则返回 null。


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

5
投票
HttpSession session = request.getSession(true); if (session.isNew()) { ...do something } else { ...do something else }
如果不存在,

.getSession(true)

告诉java创建一个新会话。

你当然也可以这样做:

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

HttpServletRequest.html

干杯, 约尔根


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

© www.soinside.com 2019 - 2024. All rights reserved.