14

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

知道为什么会发生这种情况吗?我该如何纠正?谢谢标记

4

2 回答 2

22

文件/WEB-INF夹中的文件不可公开访问。将 CSS 文件放在上一层WebContent文件夹中,并确保可以通过直接在浏览器地址栏中输入 URL 来访问它们。此外,您在 中指定的 URL<link href>必须与请求 URL(打开 JSP 时在浏览器地址栏中看到的)相关,而不是与其在服务器磁盘文件系统上的位置相关。最好的方法是通过以正斜杠开头使其与域相关/

<link rel="stylesheet" href="/BookShopWeb/css/styles.css" />

或者更动态一点,这样您就不需要每次更改上下文路径时都更改 JSP

<link rel="stylesheet" href="${pageContext.request.contextPath}/css/styles.css" />

/WEB-INFJSP文件可以保存HttpServlet<welcome-file>.

也可以看看:

于 2011-04-22T04:21:32.743 回答
6

你的目录结构应该是

/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>
于 2011-04-22T04:21:37.460 回答