我刚刚开始使用 JavaServer Faces,它看起来很有吸引力。但是,我想在与 JSF 相同的 Web 应用程序中使用我自己的 servlet。
这可能真的很明显,但是将 JSF 与“普通”基于 servlet 的应用程序集成的最佳实践是什么?这将包括从 servlet 访问 JSF 数据(读和写)。
最佳答案
如果您的 servlet 编写得很好,它们内部应该没有任何业务逻辑,而只是纯粹的请求/响应控制/预处理/后处理逻辑。业务逻辑应该已经放置在独立的类 javabean 域/模型类中。数据库逻辑应该已经放在独立的 DAO 类中。等等。您可以在 JSF 中重用它们。
也就是说,了解 JSF(当在 Servlet API 上运行时——常见情况)将请求范围的 bean 作为 HttpServletRequest
的属性进行管理,将 session 范围的 bean 作为属性进行管理可能是件好事HttpSession
的应用程序作用域 bean 作为 ServletContext
的属性。知道所有这些请求、 session 和应用程序属性都可以通过 ExternalContext#getRequestMap()
、#getSessionMap()
和 #getApplicationMap 访问也是一件好事()
。您现在应该意识到,您可以从 servlet 内部以通常的方式访问它们。
在任何情况下,当技术需要访问 Servlet
或 Filter
中的 FacesContext
时,然后立即停止编码并根据上述事实重新考虑您的方法。难道不应该更好地在新的托管 bean 中完成吗?或者可能是一个 PhaseListener
?
关于java - 如何将 JSF 与自定义 servlet 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339310/