【问题标题】:Style Paths In Java EE ApplicationsJava EE 应用程序中的样式路径
【发布时间】:2012-09-02 21:21:18
【问题描述】:

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

WEB-INF
    layout
        header.jsp
    styles
        main.css

我想在header.jsp 中包含main.css。我正在尝试执行以下操作(其中 ... 是路径):

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

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

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

正确的路径是什么?

【问题讨论】:

  • header.jsp 是否包含在位于其他地方的另一个 jsp 中?如果是这样,则路径可能需要就好像它来自该文件一样。它还有助于显示 WebContent 目录中的结构。

标签: java html css path


【解决方案1】:

首先,/WEB-INF 文件夹中的资源在没有中间(前端控制器)servlet 的情况下不能直接公开访问(这也包括 JSP 文件本身!&lt;jsp:include&gt; 在网络服务器上运行,而不是在网络浏览器上运行)。因此,您必须将 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 是未知的. HTML &lt;link&gt;&lt;script&gt;&lt;img&gt;&lt;a&gt; 等元素中的所有相对路径都是由网络浏览器相对于当前请求 URL 解析的(正如您在浏览器的地址栏中看到的那样)。只要不清楚您的请求 URL 是什么,如果不使用 ${pageContext.request.contextPath},我就无法回答正确的 CSS 路径。

另见:

【讨论】:

  • 将样式文件夹移出 WEB-INF 并更改了路径。仍然没有出现
  • 在浏览器中打开页面,右键单击并查看源代码。你现在看到的&lt;link href&gt; 是什么?
  • 它有&lt;link rel="stylesheet" href="/MyApplication/styles/main.css"&gt;
  • 在您的网络浏览器中打开http://localhost:8080/MyApplication/styles/main.css。你现在看到了什么? (顺便说一下,在处理从您的 JSP 检索到的 HTML 代码时,网络浏览器本身也会得到这个结果)
  • 对于未来阅读本文的人,请参阅stackoverflow.com/questions/12344905/…
猜你喜欢
  • 2012-03-15
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 2013-06-15
相关资源
最近更新 更多