编程语言
首页 > 编程语言> > java – 静态资源的URI中的上下文路径,我真的需要指定它吗?

java – 静态资源的URI中的上下文路径,我真的需要指定它吗?

作者:互联网

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

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服务器.

非常感谢.

解决方法:

由于这个原因,最好使用spring:url标记或JSTL c:url标记来包装HTML中的URL.这些标签将自动添加上下文路径.

例如:

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

或者,您可以在开发中使用“”的上下文路径.那样你的网址就会与生产相匹配.对于每个servlet容器,这样做的方式是不同的 – 例如,对于Tomcat,您可以将应用程序部署到webapps / ROOT.

标签:java,spring-mvc,contextpath
来源: https://codeday.me/bug/20190726/1543991.html