request.getSession();request.getSession(true);request.getSession(false); 矫情吗;* 2022-05-22 04:36 176阅读 0赞 我们通常使用最多的是request.getSession(); 如果我们看一下getSession方法的时候会发现还有一个带有boolean类型参数的同名方法; getSession(boolean arg0); **request.getSession(true);** **等同于request.getSesson();如果存在session的话则返回session,否则将新建一个session;** **———————————** **request.getSession(false);** **如果存在session的话则返回session,否则将返回null;** 在工作中我们都用过request.getSession(); 在action或controller中通过request.getSession();来获取HttpSession; 然后通过HttpSession对象来获取保存在session中的某一变量/对象/标记等; 在action或controller中可能会出现session不存在的情况; 如果不存在,此时我们再用request.getSession();的时候就会重新创建了一个session, 请看一下示例代码: HttpSession session = request.getSession(); //不存在session的时候会新建一个session User user = session.getAttribute("user"); //不存在session的时候新建一个session,那么session中肯定是没有任何 //变量/对象/标记的 syso(user.getName); //此处没有判断会报空指针 此处代码应改为 HttpSession session = request.getSession(false); User user = session.getAttribute("user"); if(user != null) \{ syso(user.getName); \} 所以在工作中, 如果我们需要用session获取变量/对象/标记 的时候,最好用request.getSession(false); 不要忘了非空判断; 如果我们需要用session保存变量/对象/标记的时候,最好用request.getSession(true);或者默认写法 request.getSession();
还没有评论,来说两句吧...