java - 如何将 JSF 与自定义 servlet 集成?

标签 java jsf servlets jakarta-ee

我刚刚开始使用 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 内部以通常的方式访问它们。

在任何情况下,当技术需要访问 ServletFilter 中的 FacesContext 时,然后立即停止编码并根据上述事实重新考虑您的方法。难道不应该更好地在新的托管 bean 中完成吗?或者可能是一个 PhaseListener

关于java - 如何将 JSF 与自定义 servlet 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339310/

相关文章:

jsf - 在 pe :dynaform from bean 中添加 PrimeFaces 组件

java - 存储电子邮件附件元数据

java - Spring 中的事务方法

java - 并行流和 forkjoinpool 在生产中使用安全吗?

image - 在 JSF 中以表格格式显示图像列表

jsf - 如何配置 war 以便依赖 war 中导出的库而不是服务器中的库?

java - 在 session 过期之前调用方法

java - 如何从另一个传递表单对象和调用的 Action 方法调用spring Controller @RequestMapping

java - Centos 7 + Oracle 12c 驱动程序无法连接

java - 合并两个 java servlet 的输出