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、运行结果
以上例子均测试验证经过。