解决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无法匹配到相关的资源,日志如下:
浏览器端后台如下:
这时候页面所有的样式和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中解决方法。