3

我们如何从 Java Web 服务器上的 CSS/JS 文件中访问 Web 应用程序上下文 URL?

我们可以将 URL(例如背景图像)与url('../img/bg.gif')etc 相对映射,但这不适用于具有以下映射的 Web 应用程序:

  • /店铺/
  • /商店/表演/3/
  • /商店/付款/

因为浏览器会相对于当前的“虚拟”目录搜索这个文件。

此外,我们不能普遍映射图像 URL 全局 like url('/images/bg.gif')因为我们强制部署在顶级目录中,例如example.com/(not example.com/myproject/)。

更改应用程序上下文 URL 时如何避免更改 CSS/JS(ajax) URL?是否可以通过简单的方式访问 CSS 文件中的应用程序上下文,例如访问默认 servlet 中的 contextPath 来服务那些静态文件?

4

1 回答 1

1

您可以这样做(假设您使用的是 Tomcat,如果没有,请查找文档以找到正确的 servlet 名称以添加映射):

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
        <param-name>fork</param-name> 
        <param-value>false</param-value> 
    </init-param> 
    <init-param> 
        <param-name>xpoweredBy</param-name> 
        <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 

<servlet-mapping> 
  <servlet-name>jsp</servlet-name>
  <url-pattern>*.css</url-pattern>
</servlet-mapping>

然后你可以在你的css中添加jsp el代码:

url('${pageContext.request.contextPath}/images/bg.gif')

这将使您的 CSS 文件的服务速度慢得多,因此请考虑是否可以在根目录下使用绝对路径。我们在允许 CSS 蒙皮的应用程序中使用了这种方法,以便我们可以输出自定义配色方案。

于 2013-09-24T19:51:38.230 回答