在我的一个 servlet 中,我调用 RequestDispatcher.forward()
调用 WEB-INF 文件夹下某处的静态资源:
request
.getRequestDispatcher( "/WEB-INF/some/path/image.gif" )
.forward( request, response );
导航到此 servlet 在 Tomcat、Jetty 等下工作正常,但在 WebSphere 7 中不起作用。 我得到的错误(在浏览器和服务器日志中)是
Error 403: SRVE0190E: File not found: /WEB-INF/some/path/image.gif
最初我假设 WebSphere 可能需要一些特定的配置以允许内部转发到 WEB-INF 下的资源,但我没有用谷歌搜索任何有用的东西。
知道为什么会发生这种情况吗?
提前致谢!
最佳答案
似乎应该将 exposeWebInfOnDispatch
属性设置为 true
以使 WebSphere 中的 servlet 可以访问 WEB-INF。我从 WebSphere forum 得到了这个答案.
在 WebSphere 7 管理控制台中,
- 转到“服务器”=>“服务器类型”=>“WebSphere 应用程序服务器” 在左边
- 在页面主要部分的列表中选择合适的服务器
- 点击“容器设置”=>“Web 容器设置”=>“Web 容器”
- 转到右侧的“自定义属性”
添加新属性:
- 名称:
exposeWebInfOnDispatch
- 值:
true
- 名称:
关于java - RequestDispatcher.forward() 到 "/WEB-INF"下的资源在 WebSphere 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378230/