zoukankan      html  css  js  c++  java
  • spring-mvc里的 <mvc:resources> 及静态资源访问

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

    复制代码
        <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:spring-mvc.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>        
    复制代码

    只拦截.do请求配置如下:

    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>*.do</url-pattern>  
    </servlet-mapping> 

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

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

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

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

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

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

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

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

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

    说明:

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

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

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

    交由Servlet处理。

    也可以使用二:

    web.xml里添加如下的配置

    复制代码
    <servlet-mapping>  
         <servlet-name>default</servlet-name>  
         <url-pattern>*.css</url-pattern>  
    </servlet-mapping>  
      
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.gif</url-pattern>  
      
    </servlet-mapping>  
         
    <servlet-mapping>  
         <servlet-name>default</servlet-name>  
         <url-pattern>*.jpg</url-pattern>  
    </servlet-mapping>  
         
    <servlet-mapping>  
         <servlet-name>default</servlet-name>  
         <url-pattern>*.js</url-pattern>  
    </servlet-mapping>  
    复制代码
  • 相关阅读:
    数据库索引分析(一)
    对象的序列化(串行化)分析(一)
    Java 集合类 TreeSet、TreeMap
    查找杀死指定进程delphi
    delphi集合的用法
    debian 删除软件
    linux 各种国内源更新 (source)
    screen 命令使用记录
    Python 常用import
    常用Python函数
  • 原文地址:https://www.cnblogs.com/tiancai/p/9341975.html
Copyright © 2011-2022 走看看