faces-servlet 的 url 模式应该是简单的 *.xhtml,以便 JSF 处理任何路径上的所有 xhtml 文件,然后 url 应该是 http://localhost:8080/amazonlite/cart.xhtml 才能正常工作。
要对部署环境中使用的正确 URL 进行逆向工程:Web 应用程序的名称(本例中为“amazonlite”)默认是 URL 的一部分,Tomcat 侦听 HTTP 流量的默认端口是 8080。
Web 应用程序的名称默认为战争名称,不带 .war 扩展名。因此 amazonlite.war 变为 amazonlite。
供参考,问题中更改后的 web.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<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>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>