我正在阅读一本关于 JSF 的书(JavaSever Faces - Introduction by Example),我发现了以下摘录
在 JSF 2.0 之前,为了使 JSF servlet 能够翻译 XHTML 页面,您需要确保 web.xml 文件包含指示 javax.faces.webapp.FacesServlet 类及其关联的 servlet 映射 URL 的 servlet 元素。自 JSF 2.0 发布以来,如果使用 Servlet 3.x 容器,FacesServlet 会自动为您映射,因此无需调整 web.xml 配置。
我决定尝试一下,但没有奏效并出现 404 错误。
web.xml
<!-- Commenting this out in Glassfish server based on the book's guidelines -->
<!--
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
在迁移到 Glassfish 4.x 之前,我已经在 Tomcat 8 上进行了这项工作。奇怪的是,一旦我取消注释FacesServlet
部署描述符中的映射,一切都很好,我没有得到 404。
Glassfish 4.xa 是 Servlet 3.x 容器吗?我做错了什么还是书籍指南不正确?