【问题标题】:Context path in URIs of static resources, do I really need to specify it?静态资源的 URI 中的上下文路径,我真的需要指定它吗?
【发布时间】:2011-07-01 06:21:59
【问题描述】:

我有一个简单的网络应用程序

webapp
   static
       images
            - a.gif
       pages
            - test.html
   WEB-INF
       pages
            - test.jsp

在test.html中,有

<img src="/static/images/a.gif"/>

问题是直到我将 uri 更改为

<img src="/web app name/static/images/a.gif"/>

但我在 URI 加载 test.html

http://server/web app name/static/pages/test.html

我在 web.xml 中配置静态资源映射如下。

<servlet>
    <servlet-name>springWeb</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-web.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springWeb</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>resourceServlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>resourceServlet</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

我错过了什么吗?我确实希望将这些静态资源保留在 DEV 阶段的应用程序中,而不是将它们移动到 HTTP 服务器。

非常感谢。

【问题讨论】:

    标签: java spring-mvc contextpath


    【解决方案1】:

    使其更通用的一种方法是使用

    <img src="<%=request.getContextPath()%>/static/images/a.gif"/>
    

    如果您知道您的目录结构,您可以使用相对 url,例如

    static/images/a.gif
    ../static/images/a.gif
    

    【讨论】:

    • 由于 dir 结构将保持不变,根据 OP,最好使用替代的 static/images/a.gif。 OP 面临的问题是由于添加了前导斜杠。
    • +1,虽然${pageContext.request.contextPath} 更好。
    【解决方案2】:

    出于这个原因,使用 spring:url 标记或 JSTL c:url 标记在 HTML 中包装 URL 是一种很好的做法。这些标签会自动添加上下文路径。

    例如:

    <img src="<spring:url value='/static/images/a.gif'/>"/>
    

    或者,您可以在开发中使用“”的上下文路径。这样你的网址就会匹配生产。每个 servlet 容器的完成方式都不同 - 例如,对于 Tomcat,您可以将应用部署到 webapps/ROOT。

    【讨论】:

    • 两个答案都很好,我更喜欢 .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多