javax.faces.webapp.FacesServlet
是一个实现Servlet
接口的类。为了在您的应用程序中被识别,您应该在 web.xml 中将其添加为<servlet>
. 这基本上是在这个配置中完成的:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
现在,我们可以使用Faces Servlet名称在 web.xml 文件中引用这个类。接下来要做的是定义将由该 servlet 处理的 URL。这是在此配置中完成的:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
因此,任何以jsf后缀结尾的应用服务器的 GET 或 POST 请求都将由 Faces Servlet 处理。您可以将其他 URL 模式用于 servlet 映射。在这里可以更好地解释:JSF Facelets:有时我看到 URL 是 .jsf,有时是 .xhtml。为什么?
如果我尝试在另一台服务器上部署我的应用程序,我会遇到任何问题吗?喜欢 JBoss 还是 Websphere?
如果应用程序服务器是符合 Java EE 5 的服务器,那么您将可以通过使用 JSF 1.2 形式的 Mojarra 实现来访问此 servlet。对于符合 Java EE 6 的服务器,这将在 JSF 2.x 中的 Mojarra 实现中(查看应用程序服务器的注释以了解确切的版本)。目前,使用 GlassFish 4,您可以获得用于 JSF 2.2 的 Mojarra。
如果应用程序服务器不是符合 Java EE 的服务器,例如 Tomcat,您必须在 Web 应用程序的 WEB-INF/lib 文件夹中手动添加库。要添加哪些库?取决于 JSF 版本及其要求(进一步阅读)。
使用 JSF 技术的先决条件是什么?
这在StackOverflow JSF wiki中有介绍。取自那里:
最低要求
- JSF 1.0 和 1.1 至少需要 Servlet 2.4 / JSP 2.0 和 Java 1.4。
- JSF 1.2 在 Servlet 2.4 上工作,但至少需要与 Servlet 2.5 齐头并进的 JSP/EL 2.1,所以它毕竟需要 Servlet 2.5。如果您将 JSP 2.1 替换为 Facelets 1.x 作为默认视图技术,那么您可以在 Servlet 2.4 上使用 JSF 1.2。它至少需要 Java 1.5。
- 默认情况下使用 Facelets 2.x 的 JSF 2.0 至少需要与 Servlet 2.5 齐头并进的 EL 2.1,因此它毕竟需要 Servlet 2.5。如果您提供自己的 EL 2.1 API/impl,那么理论上您可以在 Servlet 2.4 上运行 JSF 2.0。它至少需要 Java 1.5。
- JSF 2.1 使用了一些 Servlet 3.0 特定的特性,但向后兼容 Servlet 2.5。这些 Servlet 3.0 特性是可选的。
- JSF 2.2 至少需要 Servlet 3.0,因为新的文件上传组件在内部使用标准 Servlet 3.0 API,而不需要第三方库。它至少需要 Java 1.6。
Servlet 2.4 容器的示例有 Tomcat 5.5.x、JBoss AS 4.x 和 Sun Java Application Server。
Servlet 2.5 容器的示例有 Tomcat 6.0.x、JBoss AS 5.x 和 GlassFish 2.x。
Servlet 3.0 容器的示例有 Tomcat 7.0.x、JBoss AS 6.x 和 7.x 以及 GlassFish 3.x。
Servlet 3.1 容器的示例有 Tomcat 8.0.x、WildFly 8.x 和 GlassFish 4.x。