我是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);
答案 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模式,以避免出现此类问题。