1

我有一个 Java EE 应用程序,在应用程序中我有以下结构。

WEB-INF
    layout
        header.jsp
    styles
        main.css

我想main.cssheader.jsp. 我正在尝试执行以下操作(其中 ... 是路径):

<link rel="stylesheet" href="..."> 

但是,我似乎无法找到正确的道路。我尝试了以下每一项都没有运气:

../styles/main.css
/styles/main.css
styles/main.css
/WEB-INF/styles/main.css
WEB-INF/styles/main.css

什么是正确的路径?

4

1 回答 1

14

首先,/WEB-INF如果没有中间(前端控制器)servlet,文件夹中的资源不能直接公开访问(这也包括 JSP 文件本身!<jsp:include>在 webserver 上运行,而不是在 webbrowser 上运行)。因此,您必须将 CSS(以及 JS 和图像)文件放在/WEB-INF文件夹之外。

WebContent
 |-- WEB-INF
 |    `-- layout
 |         `-- header.jsp
 |-- styles
 |    `-- main.css
 :

假设它现在在 中/styles/main.css,那么您可以按如下方式引用它:

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

使用${pageContext.request.contextPath}(使用前导斜杠打印当前上下文路径,从而保证 CSS URL 相对于域根目录)本身并不是必需的,但这是您最安全的选择,因为当前请求 URL 是未知的。<link>HTML , <script>, <img>,等元素中的所有相对路径<a>都是由网络浏览器相对于当前请求 URL 解析的(正如您在浏览器的地址栏中看到的那样)。只要不清楚您的请求 URL 是什么,我就无法在不使用${pageContext.request.contextPath}.

也可以看看:

于 2012-09-10T01:47:28.600 回答