如何放行静态资源

            restful风格
 url路径的风格
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 *.do 、 *.action等方式。这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL。
如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。
    如何放行静态资源,让静态资源不经过前端控制器,直接响应。解决的方法有如下三种: 

1)激活Tomcat的defaultServlet来处理静态文件
在web.xml里添加如下配置

1.<servlet-mapping>  
2.    <servlet-name>default</servlet-name>  
3.    <url-pattern>*.jpg</url-pattern>  
4.</servlet-mapping>  
5.<servlet-mapping>  
6.    <servlet-name>default</servlet-name>  
7.    <url-pattern>*.js</url-pattern>  
8.</servlet-mapping>  
9.<servlet-mapping>  
10.    <servlet-name>default</servlet-name>  
11.    <url-pattern>*.css</url-pattern>  
12.</servlet-mapping>  

要配置多个,每种文件配置一个。要写在DispatcherServlet的前面,让defaultServlet先拦截,这个请求就不会进入Spring了。


2)在spring3.0.4以后版本提供了mvc:resources

<mvc:resources> 的使用方法:

1.<!--对静态资源文件的访问-->  
2.<mvc:resources mapping="/images/**" location="/images/" />    
/images /**映射到 ResourceHttpRequestHandler 进行处理,location指定静态资源的位置web application根目录下。
mapping:映射
location:本地资源路径,注意必须是webapp根目录下的路径。

3)使用<mvc:default-servlet-handler/>

在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

猜你喜欢

转载自blog.csdn.net/weixin_41637749/article/details/80883349
今日推荐