1

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

4

1 回答 1

1

所有会话范围的 bean 在请求会话中都保存为“属性”吗?

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

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

也可以看看:

于 2012-07-26T15:57:53.683 回答