我正在使用
创建会话HttpSession session = request.getSession();
在创建会话之前,我想检查它是否存在。我该怎么做?
答案 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.
}
保存一行和boolean
。 request.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)检查用户是否有会话。使用此方法,如果要根据用户是否经过身份验证来呈现视图,则不会创建新会话。