我们如何从java web服务器上的CSS / JS文件中访问Web应用程序上下文URL?
我们可以使用url('../img/bg.gif')
等相对地映射URL(例如背景图像),但这不适用于具有以下映射的Web应用程序:
因为浏览器会搜索相对于当前“虚拟”目录的此文件。
此外,我们无法普遍地将图片网址全球映射为url('/images/bg.gif')
,,因为我们强制部署在顶级目录,例如example.com/
(不是example.com/myproject/
)。
如何在更改应用程序上下文URL时避免更改CSS / JS(ajax)URL? 有可能以简单的方式访问CSS文件中的aplication上下文,比如访问那些为这些静态文件服务的默认servlet中的contextPath?
答案 0 :(得分:1)
你可以这样做(假设你正在使用Tomcat,如果没有,请查找doc以找到正确的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进行蒙皮的应用程序中使用了这种方法,以便我们可以输出自定义颜色方案。