解决springmvc请求丢失js等静态资源的方法

     最近做的一个项目,要求所有页面中的静态资源全部使用服务器项目的绝对路径,所以将页面中的静态资源都改成如下情况:

解决springmvc请求丢失js等静态资源的方法


Web.xml中springmvc的配置代码如下:

<servlet>

       <servlet-name>springMVC</servlet-name>

       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

       <init-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>classpath:springmvc-servlet.xml</param-value>

       </init-param>

       <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

       <servlet-name>springMVC</servlet-name>

       <url-pattern>/</url-pattern>

    </servlet-mapping>

 

这时候请求页面会发现页面无法加载所有的静态资源(js,css等),它会认为springmvc无法匹配到相关的资源,日志如下:

 解决springmvc请求丢失js等静态资源的方法


浏览器端后台如下:

解决springmvc请求丢失js等静态资源的方法

这时候页面所有的样式和js效果都没有了。


下面是最近找到的2中解决方法:

第一种:使用spring mvc 的 <mvc:resources >标签用来处理静态文件,在springmvc的xml配置文件中加上如下代码:

   

    <!-- 静态资源(js/css)的访问 --> 

    <mvc:resources location="/css/" mapping="/css/**"/>

     <mvc:resources location="/js/" mapping="/js/**"/>

 

第二种方式:

在springmvc的xml配置文件中加上如下代码,使用默认的handler处理:

<!--  对静态资源文件的访问, Web应用服务器默认的Servlet名称是"default" -->

    <!-- 容器默认的DefaultServletHandler处理所有静态内容与无RequestMapping处理的URL -->

    <mvc:default-servlet-handler/>

以上即为我总结的2中解决方法。