在试图弄清楚如何为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在请求会话中保存为“属性”?
答案 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
属性。