我正在创建会话,使用的是:
HttpSession session = request.getSession();
在创建会话之前,我想检查它是否存在。我该如何做?
如果你想在创建之前检查这个,那么可以这样做:
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.
}
这样可以节省一行代码和一个布尔值。 request.getSession()
的作用相当于 request.getSession(true)
。
有一个函数request.getSession(boolean create)
参数:
create
- 如果需要为此请求创建新的会话,则传递true;如果没有当前会话,则传递false以返回null。
因此,您可以简单地传递false
来告诉getSession
如果不存在该会话则返回null。
if(null == session.getAttribute("name")){
// User is not logged in.
}else{
// User IS logged in.
}
HttpSession session = request.getSession(true); if (session.isNew()) { ...做一些事情 } else { ...做其他事情 }
.getSession(true)
告诉Java在不存在会话时创建新会话。
当然,您也可以执行以下操作:
if(request.getSession(false) != null){
HttpSession session = request.getSession();
}
false
传递给第二个 .getSession()
。 - aioobe我想补充一点,如果你为每个连接到你的网站的新用户创建一个新的会话,那么你的性能将受到严重影响。使用request.getSession(false)方法来检查用户是否有会话。使用此方法,如果你要基于用户是否经过身份验证来呈现视图,则不会创建新的会话。