【发布时间】:2011-02-18 13:58:08
【问题描述】:
我正在使用
创建会话HttpSession session = request.getSession();
在创建会话之前,我想检查它是否存在。我该怎么做?
【问题讨论】:
我正在使用
创建会话HttpSession session = request.getSession();
在创建会话之前,我想检查它是否存在。我该怎么做?
【问题讨论】:
我想补充一点,如果您为每个连接到您网站的新用户创建一个新会话,那么您的性能将受到重创。使用 request.getSession(false) 检查用户是否有会话。使用此方法,如果您要根据用户是否经过身份验证来呈现视图,则无需创建新会话。
【讨论】:
if(null == session.getAttribute("name")){
// User is not logged in.
}else{
// User IS logged in.
}
【讨论】:
如果你想在创建之前检查这个,那么这样做:
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) 的作用相同。
【讨论】:
有一个函数request.getSession(boolean create)
参数:
create- 如有必要,为该请求创建一个新会话;如果没有当前会话,则返回 null
因此,您可以简单地通过 false 告诉 getSession 如果会话不存在则返回 null。
【讨论】:
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()。