一、前言
Spring MVC 下的 WEB 项目,会配置 Servlet 为DispatcherServlet,设置拦截 url 一般为/,如下 web.xml 配置:
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext.xml
1
SpringMVC
/
这样,静态资源也会被 DispatcherServlet 拦截导致不能访问(404),可以通过以下四种对静态资源放行。
二、静态资源放行四种方式
1、web.xml 中设置 default Servlet
default
*.html
default
*.css
default
*.js
其实就是将设置的静态资源重新交由 default Servlet(如果 WEB 容器是 Tomcat,其实就是 tomcat 的默认 Servlet)去处理。
可以看到每一种后缀的静态资源都需要配置一次,所以这种方式是比较臃肿的。
2、Spring MVC 配置文件中配置 mvc:resources
这种方式也需要根据放行的资源目录,配置多条。
3、 Spring MVC 配置文件中配置 mvc:default-servlet-handler
这一条就够了,这样所有的静态资源全部走默认 Servlet。
4、web.xml 配置 url 拦截加后缀
*.do
这其实是 Hibernate 对应的 url 配置习惯,这样浏览器访问路径就成了:http://localhost:8080/xxx/xxx.do
这就需要在编写 RequestMapping 时都加上.do后缀,浏览器访问也要加上,这不符合 Spring MVC 的编程习惯。
以上就是 Spring MVC 不拦截静态资源的四种方式。over!