java - RequestDispatcher.forward() 到 "/WEB-INF"下的资源在 WebSphere 中不起作用

标签 java servlets websphere web-inf requestdispatcher

在我的一个 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 管理控制台中,

  1. 转到“服务器”=>“服务器类型”=>“WebSphere 应用程序服务器” 在左边
  2. 在页面主要部分的列表中选择合适的服务器
  3. 点击“容器设置”=>“Web 容器设置”=>“Web 容器”
  4. 转到右侧的“自定义属性”
  5. 添加新属性:

    • 名称:exposeWebInfOnDispatch
    • 值:true

关于java - RequestDispatcher.forward() 到 "/WEB-INF"下的资源在 WebSphere 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378230/

相关文章:

java - session失效后request.getUserPrincipal()仍然不为null

WebSphere liberty wasJmsServer 死信队列

java - ClassCastExceptions 由于在 WebSphere 8.5.5 应用程序容器中升级到 hibernate 4.2.8

java - Google Guava - 除了 go KEY 外,还将参数传递给加载方法

java - 另一个类中的实例变量

java - google服务器如何区分浏览器和HtmlUnit?

java - 从过滤器获取 servlet 参数值

java - Request、Session 和 ServletContext 中属性的区别

java - 可变 boolean 值

apache - 域重定向后在基于 Jsp-Servlet 的应用程序中丢失 session