HttpServletRequest.getSession(false)和HttpSession之间的区别

时间:2014-10-16 08:22:51

标签: java spring-mvc session-variables

我正在Spring MVC项目中工作,从我们使用的会话中获取值..

session = request.getSession(false);
Object obj = (Object) session.getAttribute("sessionVeriable");

request是从控制器传递的HttpServletRequest类对象。

我的观点是为什么HttpServletRequest对象直接传递给HttpSession的原因。从HttpServletRequest获取会话对象和直接从HttpSession获取会话对象有什么区别吗?

1 个答案:

答案 0 :(得分:4)

仅当有一个与请求关联的会话时,

session = request.getSession(false);才会返回会话。例如。 RESTful应用程序肯定会在没有会话的情况下工作。这反过来意味着您提供的代码理论上可以抛出NullPointerException

HttpSession实例传递给方法意味着如果没有任何实例与请求关联,则会创建会话。如果request参数不用于其他内容,那么在您的情况下,这是更好的选择。

为了完整起见,session = request.getSession();实际上与拥有HttpSession参数相同。