【问题标题】:Tomcat 9 Failed to load resource: the server responded with a status of 404 ()Tomcat 9 加载资源失败:服务器响应状态为 404()
【发布时间】:2019-09-06 14:06:01
【问题描述】:

我在使用 tomcat 时遇到了一些问题。由于某种原因 tomcat 无法加载我的样式表。链接在 head.jsp 中定义,我在所有需要样式表的 jsps 中使用 include 指令包含此文件.我发现当我使用request.getRequestDispatcher(...)从Servlet调度到Jsp时会出现这个问题。当我直接访问同一个文件时,样式表正常加载。

图片1:

图片2:

图片3:

图片4:

【问题讨论】:

    标签: java tomcat servlets


    【解决方案1】:

    您缺少项目的上下文路径。

    案例 1:假设您当前的 URL 是 http://localhost:8585/project_name/
    然后包括样式表与```href = "css/style.css"```
    ==> http://localhost:8585/project_name/css/style.css

    案例 2:假设您当前的 URL 是 http://localhost:8585/project_name/users
    然后包括样式表与```href = "css/style.css"```
    ==> http://localhost:8585/project_name/users/css/style.css
    404错误

    所以使用上下文路径作为前缀,在包含 javascript 或样式表的同时使用上下文路径使用 JSTL 标记库和 url 标记 来实现它,如下所示。

    包括 JSTL

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    

    使用下面给出的 jstl url 标签包含样式表或脚本

    <link rel="stylesheet" href="/css/style.css" />" >
    

    【讨论】:

    • 我不明白 - 这是怎么回事?你能解释一下吗?正如我所说,如果我直接访问文件,样式表会正常加载,但当我使用调度程序转发到文件。另外,我尝试了 url 标签,但它没有工作。这是我写的代码:
    • 让我知道您的网址在转发之前和转发之后。从浏览器获取网址。
    • 在启动时,我的浏览器打开localhost:8585/project_name/.I 尝试访问简单的示例:localhost:8585/project_name/test.This url 在 web.xml 中映射到 TestServlet。在 TestServlet 我有这个代码:RequestDispatcher dispatcher = request.getRequestDispatcher("/jsps/test.jsp"); dispatcher.forward(请求,响应);转发后我的网址是:localhost:8585/project_name/test
    • 我认为当你的 url 是 localhost:8585/project_name 时你会得到 404,因为 ../ 强制相对路径向上一个文件夹。所以它会将样式表网址设为localhost:8585....
    • c:url 应该可以在任何页面上运行,这一点毫无疑问。粘贴你的 request.getRequestDispatcher() 代码
    猜你喜欢
    • 2016-11-01
    • 2018-01-29
    • 2020-07-04
    • 1970-01-01
    • 2019-07-04
    • 2021-11-20
    • 2018-02-26
    相关资源
    最近更新 更多