jsp - 引用 JSP 文件中 WEB-INF 文件夹中的资源会在资源上返回 HTTP 404

标签 jsp resources web-inf

我有一个名为 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/

相关文章:

Java Spring 框架错误

c++ - 加载 Win32 资源文件作为 wstringstream

java - 访问 WEB-INF 文件夹中子文件夹中的 JSP?

java - 无法编译 JSP 类。类无法解析为类型

java - 使用 fmt 标签在 jsp 中进行国际化

java - 我只想在.jsp文件中写入jsp,jSTL

java - 如何解决 BeanDefinitionStoreException : IOException parsing XML document from ServletContext resource [/WEB-INF/dispatcher-servlet. xml]?

compilation - 对 Intellij 如何编译事物和处理资源感到困惑

android - 从选定的微调项字符串准备资源 ID

servlets - 在 WEB-INF 下移动资源