2009年1月14日星期三

JSF_014:什么情况下该调用 request.getSession(false)方法?

查看Java EE API,解释如下:
(1)getSession(boolean create):返回当前request对象中的HttpSession对象,如果当前request中的HttpSession 为null,当create为true,就创建一个新的Session,否则返回null。
(2)HttpServletRequest.getSession() 等同于 HttpServletRequest.getSession(ture)。

解释的比较清楚,但是到底什么情况下使用 request.getSession(false)方法,什么情况下使用 request.getSession(true)方法呢?

为了节省Web 服务器内存资源,不要创建没有用处的HttpSession对象。
因此,好的系统设计应该限定一个HttpSession只能从单一入口程序(Servlet/Filter)创建。
比如只有用户登录成功后才可以调用 request.getSession(true)创建HttpSession对象;其它程序只能调用request.getSession(false)获取HttpSession对象。
这样做的好处是,防止用户访问了其它程序,导致创建了一些不必要的HttpSession对象,造成内存浪费。

参考文献:
1. 《深入体验Java Web 开发内幕——核心基础》

没有评论: