我在这里面临一个 Java Web 项目的问题。我正在处理的项目是使用标准 jsp 与 jsf 页面混合而成的。应用程序的主页 main.jsp 是一个标准的 jsp 页面,它需要访问一个托管 bean,该 bean 具有在用于检查用户身份验证的 servlet 过滤器中创建的会话范围。在我的 web.xml 中,我设置了 faces 引擎必须响应 .jsf 和 /faces/* 请求
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
如果我打开我的应用程序,http//myserver/myapp/faces/main.jsp
一切正常。如果我打开我的应用程序,http://myserver/myapp/main.jsp
我会收到一个错误,因为还没有创建面孔上下文。当用户只需在浏览器上键入 h**p://myserver/myapp 时,既不设置欢迎页面也不设置 apache 重定向,我可以让应用程序打开正确的页面(在 faces 上下文中的 main.jsp):那是因为页面 /faces/main.jsp 在物理上不存在。
我想可能有 2 个解决方案:能够让 faces 上下文甚至在 /faces/* 模式之外启动,或者找到一种方法让 tomcat 重定向到 /faces/main.jsp 即使页面不存在.. .但我尝试的一切都失败了。