【问题标题】:JSP path error on servlet redirectservlet 重定向上的 JSP 路径错误
【发布时间】:2014-04-21 20:05:45
【问题描述】:

我是 Java Web 开发的新手。当我使用从 servlet 到 JSP 的重定向时,不会加载图片和 CSS 文件。没有 servlet,它运行良好,但是当我想使用 servlet 时,它不起作用。 CSS 文件与 JSP 文件位于同一文件夹中。请你帮我如何设置链接标签的href属性?

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

servlet 只有 1 个命令:

request.getRequestDispatcher("index.jsp").forward(request, response);

【问题讨论】:

  • 您能给我们提供一个可运行的示例,或者至少提供一些代码和详细的错误描述吗?
  • 你能用代码简单解释一下吗?
  • 我一直用,类似的。 " type="text/css" />

标签: java jsp servlets


【解决方案1】:

您说要使用重定向,但您正在使用转发。无论如何,如果资源(CSS、JS 等)文件不在 JSP 的同一路径中,那么您应该为每个文件附加请求上下文。这里有两种方法:

  • 仅使用表达式语言:

    <link rel="stylesheet" type="text/css" href="${request.contextPath}/style.css">
    
  • 使用JSTL &lt;c:url&gt;标签:

    <link rel="stylesheet" type="text/css" href="<c:url value='/style.css'/>">
    

来自您的评论:

问题是我不能在这个模式中使用 servlet urlPatterns = {"/"}

可以拥有一个带有 url 模式 "/" 的 servlet。这意味着您的 servlet 将处理应用程序中的每个请求,请注意对资源(CSS、JS、图像等)的请求是 GET 请求(您可以通过打开类似的浏览器轻松验证这一点带有 Firebug 或 Chrome 的 Firefox,按 F12 并检查网络选项卡以查看对服务器完成的所有请求),这样您的 servlet 也会处理它们。除非您想自己实现Front Controller Pattern,否则使用单个 servlet 手动处理会非常痛苦(IMO,除非您真的知道您在做什么,否则您不应该尝试这样做)。

更好的建议是为您的 servlet 使用精确的 url 模式,以避免此类问题。

【讨论】:

  • 使用JSTL必然是在jsp文件的顶部附加“java.sun.com/jsp/jstl/core" %>"。
  • @hradecek 是的,但是如果使用 JSTL,您应该知道这一点,这超出了这个问题的范围。
  • 问题是我不能使用 servlet urlPatterns = {"/"} 这个模式
  • 我必须使用 index.jsp 而不是 urlPatterns = {"/"} 的 servlet。所以 JSp 文件必须首先在索引页面上加载:)
  • 非常感谢您的帮助 :) 如果我有点烦人,我很抱歉 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 2018-04-18
  • 1970-01-01
相关资源
最近更新 更多