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

Jer*_*aum 3 java jsf servlets java-ee

我刚刚开始使用JavaServer Faces,它看起来非常有吸引力.但是,我想在与JSF相同的Web应用程序中使用自己的servlet.

这可能是非常明显的,但是将JSF与"普通"基于servlet的应用程序集成的最佳实践是什么?这将包括从servlet访问JSF数据(读取和写入).

Bal*_*usC 8

如果您的servlet写得很好,那么它们应该已经没有任何业务逻辑,而只是纯粹的请求/响应控制/预处理/后处理逻辑.业务逻辑应该已经放在独立的类似javabean的域/模型类中.数据库逻辑应该已经放在独立的DAO类中.等等.您可以在JSF中重复使用它们.

也就是说,知道JSF(当在Servlet API上运行时 - 常见情况)管理请求作用域bean作为属性,将会话HttpServletRequest作用域作为属性HttpSession,应用程序作用域bean作为属性来管理ServletContext.知道所有这些请求,会话和应用程序属性都可以访问ExternalContext#getRequestMap(),#getSessionMap()并且#getApplicationMap().您现在应该意识到,您可以从servlet内部以通常的方式访问它们.

在任何情况下,当技术需要访问FacesContext内部a Servlet或a时Filter,请立即停止对其进行编码,并根据上述事实重新考虑您的方法.不应该在新的托管bean中做得更好吗?或者是一个PhaseListener