在 JSP 文件中引用放置在 WEB-INF 文件夹中的资源会在资源上返回 HTTP 404
Posted
技术标签:
【中文标题】在 JSP 文件中引用放置在 WEB-INF 文件夹中的资源会在资源上返回 HTTP 404【英文标题】:Referencing a resource placed in WEB-INF folder in JSP file returns HTTP 404 on resource 【发布时间】:2011-08-10 18:27:42 【问题描述】:我有一个名为 BookShopWeb 的动态 Web 项目,它是在 eclipse 中创建的,具有以下目录结构
/BookShopWeb/|
|--src
|---WebContent
|
|---META-INF
|----WEB-INF---web.xml
|
|--css--styles.css
|--jsp---index.jsp
在 web.xml 中,我将起始页设置为
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
在 index.jsp 中,我将 css 包含为
<head>
<link rel="stylesheet" type="text/css" href="../css/styles.css" />
</head>
加载时的索引页面没有显示css信息。我用firebug检查了元素,它显示了一个错误报告
Apache Tomcat/6.0.29 - Error report..
The requested resource (/css/styles.css) is not available.
知道为什么会发生这种情况吗?我该如何纠正这个问题? 谢谢 标记
【问题讨论】:
【参考方案1】:/WEB-INF
文件夹中的文件不可公开访问。将 CSS 文件放在上一层,在 WebContent
文件夹中,并确保可以通过直接在浏览器地址栏中输入其 URL 来访问它们。此外,您在<link href>
中指定的 URL 必须与请求 URL(打开 JSP 时在浏览器地址栏中看到的)相关,而不是与它在服务器磁盘文件系统上的位置相关。最好的方法是通过以正斜杠 /
开头使其与域相关。
<link rel="stylesheet" href="/BookShopWeb/css/styles.css" />
或者更动态一点,这样您就不需要每次更改上下文路径时都更改 JSP
<link rel="stylesheet" href="$pageContext.request.contextPath/css/styles.css" />
JSP 文件可以保存在 /WEB-INF
中,但这样它们只能通过调度 servlet 访问,要么通过扩展 HttpServlet
自行开发,要么由 servlet 容器隐式访问,例如 <welcome-file>
。
另见:
Browser can't access/find relative resources like CSS, images and links when calling a Servlet which forwards to a JSP JSP in /WEB-INF returns "HTTP Status 404 The requested resource is not available"【讨论】:
如果JSP文件保存在/WEB-INF中,href中的字段应该怎么写? @shirley:只需指定调度 servlet 的 URL。如果您完全不熟悉 servlet,请阅读 ***.com/tags/servlets/info 我也有同样的问题。我将css
文件夹放在webapp
中,而我的jsp
在WEB-INF
中...我仍然无法获得工作参考。在web.xml
servelet 调度程序中是否也有一些配置?【参考方案2】:
你的目录结构应该是
/BookShopWeb/|
|--src
|---WebContent
|
|---META-INF
|----WEB-INF---web.xml
|
|--css--styles.css
|--jsp---index.jsp
另外,您将 css 命名为 styles.jsp,这不是声明 css 文件的正确方式。
在您的 web.xml 中:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
在你的jsp文件中:
<head>
<link rel="stylesheet" type="text/css" href="./css/styles.css" />
</head>
【讨论】:
css 文件是 styles.css。我在输入问题时出错了。 好的。但是你的目录结构应该和我的回答一样。以上是关于在 JSP 文件中引用放置在 WEB-INF 文件夹中的资源会在资源上返回 HTTP 404的主要内容,如果未能解决你的问题,请参考以下文章