servlet重定向上的JSP路径错误

时间:2014-04-21 20:05:45

标签: java jsp servlets

我是java web开发的新手。当我使用从servlet重定向到JSP时,图片和CSS文件不会加载。如果没有servlet,它运行良好,但是当我想使用servlet时,它无法工作。 CSS文件与JSP文件位于同一文件夹中。请问您如何设置链接标记的href属性?

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

servlet只有一个命令:

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

1 个答案:

答案 0 :(得分:2)

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

  • 仅使用表达式语言:

    <link rel="stylesheet" type="text/css" href="${request.contextPath}/style.css">
    
  • 使用JSTL <c:url>代码:

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

来自你的评论:

  

问题是我无法使用这种模式的servlet urlPatterns = {&#34; /&#34;}

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

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