mvc:resources


在进行Spring MVC的配置时,通常我们会配置一个dispatcher servlet用于处理对应的URL。配置如下:

    
        SpringMVC
        class>org.springframework.web.servlet.DispatcherServletclass>
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        1
    
    
        SpringMVC
        /
         

这表示名字为 SpringMVC 的servlet会处理一切的url对应的请求,那么我们怎么让servlet来处理项目中的静态资源呢?这里有两种方法。

  1. 另外使用一个servlet来处理静态资源。若我们的资源放置在webapps文件夹下的resources文件夹中,那么我们可以用名字为default的servlet来处理静态资源。因此我们还需要在上述配置的基础上加上以下配置:

<servlet-mapping>  
<servlet-name>defaultservlet-name>  
<url-pattern>/resources/*url-pattern>  
servlet-mapping>  

这表示default的servlet会处理url中为resources/*的对应的请求。这样,当你把你的image,css已经其他文件放在resources文件中时,spring就可以找到它啦。

2. 采用spring自带方法。首先找到你定义的那个servlet的xml文件,如本例子中,servlet的名字叫spring-mvc.xml,因此需要找到spring-mvc.xml文件,并在该文件中插入以下配置:

<mvc:annotation-driven/>  
<mvc:resources mapping="/resources/**/" location="/resources/"/>  

如此就不必另外添加一个mvc来处理静态资源。而mvc知道静态资源所处的位置为resources文件夹。
两种方法都可以将spring mvc配置处理静态资源。

 

在SpringMVC3.0之后推荐使用二: 

 <mvc:annotation-driven />
 <mvc:resources location="/static/" mapping="/static/**"/>   

说明:

location元素表示webapp目录下的static包下的所有文件;

mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b;

该配置的作用是:DispatcherServlet不会拦截以/static开头的所有请求路径,并当作静态资源交由Servlet处理。

也可以使用一:

在spring-mvc里面加入


default-servlet-handler/>

在web.xml里添加如下的配置

  
     default  
     *.css  
  
  
  
    default  
    *.gif  
  
  
     
  
     default  
     *.jpg  
  
     
  
     default  
     *.js