【问题标题】:getRequestDispatcher returning null even though path/file exists in webapp即使 webapp 中存在路径/文件,getRequestDispatcher 也会返回 null
【发布时间】:2014-08-04 08:29:12
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 在你的爆炸战争中,这个 login.jsp 与你的 web 根目录在哪里
  • 它就在war文件的根目录下。因此,当它爆炸时,它会转到 tomcat/webapps//loginpage.jsp (我证实确实发生了)
  • 有点猜测,但如果你把它放在/WEB-INF/loginpage.jsp 中可能会起作用?
  • 我不太确定这是否会有所帮助。 jsp 并不真正属于 WEB-INF ......事实上,tomcat 甚至不允许通过 http 提供 WEB-INF 中的文件。

标签: java tomcat servlets tomcat7 servlet-filters


【解决方案1】:

解决方案非常简单,只是对 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

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2020-11-29
    • 2019-10-13
    相关资源
    最近更新 更多