1.轉自:http://wenda.so.com/q/1366414933061950?src=150web
歸納:spring
request.getSession(true):若存在會話則返回該會話,不然新建一個會話。cookie
request.getSession(false):若存在會話則返回該會話,不然返回NULLsession
===========================================================================工具
2.轉自:http://blog.csdn.net/gaolinwu/article/details/7285783測試
1、需求緣由this
現實中咱們常常會遇到如下3中用法:spa
HttpSession session = request.getSession(); HttpSession session = request.getSession(true); HttpSession session = request.getSession(false);
2、區別.net
1. Servlet官方文檔說:翻譯
public HttpSessiongetSession(boolean create) Returns the currentHttpSession associated with this request or, if if there is no current sessionand create is true, returns a new session. If create is falseand the request has no valid HttpSession, this method returns null. To make sure thesession is properly maintained, you must call this method before the responseis committed. If the container is using cookies to maintain session integrityand is asked to create a new session when the response is committed, anIllegalStateException is thrown. Parameters: true -to create a new session for this request if necessary; false to return null ifthere's no current session Returns: theHttpSession associated with this request or null if create is false and therequest has no valid session
2. 翻譯過來的意思是:
getSession(boolean create)意思是返回當前reqeust中的HttpSession ,若是當前reqeust中的HttpSession 爲null,當create爲true,就建立一個新的Session,不然返回null; 簡而言之: HttpServletRequest.getSession(ture)等同於 HttpServletRequest.getSession() HttpServletRequest.getSession(false)等同於 若是當前Session沒有就爲null;
3. 使用
當向Session中存取登陸信息時,通常建議:HttpSession session =request.getSession();
當從Session中獲取登陸信息時,通常建議:HttpSession session =request.getSession(false);
4. 更簡潔的方式
若是你的項目中使用到了Spring(固然大點的項目都用到了),對session的操做就方便多了。若是須要在Session中取值,能夠用WebUtils工具(org.springframework.web.util.WebUtils)的getSessionAttribute(HttpServletRequestrequest, String name)方法,看看源碼:
publicstatic Object getSessionAttribute(HttpServletRequest request, String name){ Assert.notNull(request, "Request must not be null"); HttpSession session =request.getSession(false); return (session != null ?session.getAttribute(name) : null); }
注:Assert是Spring工具包中的一個工具,用來判斷一些驗證操做,本例中用來判斷reqeust是否爲空,若爲空就拋異常
你使用時:WebUtils.setSessionAttribute(request, 「user」, User);
User user = (User)WebUtils.getSessionAttribute(request, 「user」);
源碼:
/** * Set the session attribute with the given name to the given value. * Removes the session attribute if value is null, if a session existed at all. * Does not create a new session if not necessary! * @param request current HTTP request * @param name the name of the session attribute */ public static void setSessionAttribute(HttpServletRequest request, String name, Object value) { if (value != null) { request.getSession().setAttribute(name, value); } else { HttpSession session = request.getSession(false); if (session != null) { session.removeAttribute(name); } } }
3、運行結果
以上例子均測試驗證經過。