会话范围bean和HttpServletRequest之间的关系是什么?

时间:2012-07-26 15:49:04

标签: jsf javabeans httprequest

在试图弄清楚如何为JSF应用程序实现登录过滤器时,我看到了这两行代码,我对此并不了解:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {  

HttpServletRequest req = (HttpServletRequest) request;
LoginBean login = (LoginBean) req.getSession().getAttribute("login");

}

假设LoginBean类是名为“login”的会话范围bean,因为我注意到bean是请求的属性,它们之间的关系是什么?是否会话范围bean在请求会话中保存为“属性”?

1 个答案:

答案 0 :(得分:1)

  

是否在会话中将所有会话范围的bean保存为“属性”?

这是对的。 JSF只是一个基于裸Servlet API构建的MVC框架,而不是一个可以在没有Servlet API的情况下运行的完全独立的框架。更重要的是,JSF核心控制器FacesServlet是一个值得信赖的Servlet,所以它肯定需要一个servlet容器来运行。概念“session”在HttpSession提供的Servlet API中,因此在那里存储JSF会话范围的bean而不是重新发明它是完全有意义的。

请注意,JSF请求作用域bean存储为HttpServletRequest属性,而JSF应用程序作用域bean存储为ServletContext属性。

另见: