在JSP文件中引用放置在WEB-INF文件夹中的资源将返回资源上的HTTP 404

在JSP文件中引用放置在WEB-INF文件夹中的资源将返回资源上的HTTP 404,jsp,resources,web-inf,Jsp,Resources,Web Inf,我在eclipse中创建了一个名为BookShopWeb的动态web项目,该项目具有以下目录结构 /BookShopWeb/| |--src |---WebContent | |---META-INF |----WEB-INF---web.xml | |--css--styles.

我在eclipse中创建了一个名为BookShopWeb的动态web项目,该项目具有以下目录结构

/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>
知道为什么会发生这种情况吗?我该怎么纠正? 谢谢
标记
/WEB-INF
文件夹中的文件不可公开访问。将CSS文件放在
WebContent
文件夹的上一层,通过直接在浏览器地址栏中输入URL确保可以访问这些文件。另外,您在
中指定的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容器(如
隐式生成的)

另见:

您的目录结构应该是

/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>

index.jsp
在jsp文件中:

<head>
<link rel="stylesheet" type="text/css" href="./css/styles.css" />
</head>


css文件是styles.css。我在键入问题时出错。好的。但您的目录结构应该和我的答案中的一样。如果JSP文件保存在/WEB-INF中,我应该如何在href中写入字段?@shirley:只需指定分派servlet的URL即可。如果您对servlets完全陌生,请阅读我也有同样的问题。我把
css
文件夹放在
webapp
中,而我的
jsp
放在
WEB-INF
中……我仍然无法获得工作参考。在
web.xml
Servlet dispatcher中是否也需要对此进行一些确认?
<welcome-file-list>

<welcome-file>index.jsp</welcome-file>
<head>
<link rel="stylesheet" type="text/css" href="./css/styles.css" />
</head>