java - 即使路径/文件存在于 webapp 中,getRequestDispatcher 也返回 null

标签 java tomcat servlets tomcat7 servlet-filters

我正在尝试从过滤器中获取登录页面,如下所示: context.getRequestDispatcher("/loginpage.jsp") (然后我想转发给它)

现在,如果我执行 context.getContext("/loginpage.jsp"),它会正确显示我想要的资源的文件系统路径。所以这意味着它确实可以看到它。但是使用请求调度程序它只是不会解决。

我以非常不标准的方式运行这个 tomcat。我使用 catalina.sh 通常会调用的所有属性和选项调用 java.exe。我同意这可能是我所有问题的原因,但我仍然有兴趣找出这里可能出现的问题。

(注意:这只在开发环境中这样运行,并且直到最近一直在正常工作,没有提示。但是我最近对开发环境进行了重大更改,这显然破坏了一些东西)

编辑: 我刚刚注意到的另一点是,即使尝试访问完全静态的资源(如/css/styles.css 等)也会失败。所以这不是 getrequestDispatcher 的特定问题,而是我认为更基本的问题?

最佳答案

解决方案非常简单,归结为对 CATALINA_HOME/CATALINA_BASE 工作原理的误解: 放在 CATALINA_HOME/conf 中的任何内容似乎都被忽略了。因此,即使我在 CATALINA_HOME/conf 中有 web.xml 和 content.xml,它也会忽略它。

任何日志(应用程序日志、catalina.logs、localhost.log、host-managed.log 等)中都没有异常或错误。所以调试这个问题真的很难。

这个问题帮助我找到了答案: https://serverfault.com/questions/205154/war-deployed-in-tomcat-not-showing-up-at-url-getting-404-instead

关于java - 即使路径/文件存在于 webapp 中,getRequestDispatcher 也返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211087/

相关文章:

java - 当按下某个组合键时,JFrame 可以重新出现吗?

java - 如何从私有(private)内部类转换为可运行接口(interface)?

java - 如何更改 Tomcat 默认工作目录?

java - servlet/jsp 、 doGet 和 doPost 、注册表

通过控制台制作文件的Java错误

java - 更新时 hibernate 缓存

java - 从 JAX-RS 服务获取资源时出错

tomcat - 当我通过 g :form, 提交大量参数时,params 对象中缺少一些参数

java - 异常后如何转发?

java - response.setContentType() 在 Java Filter 中重置