我有一个名为 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.
知道为什么会这样吗?我该如何纠正? 谢谢 标记
最佳答案
/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
自行开发或者由 servletcontainer 隐式地提供,例如 <welcome-file>
.
另见:
关于jsp - 引用 JSP 文件中 WEB-INF 文件夹中的资源会在资源上返回 HTTP 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376016/