spring mvc的静态资源拦截器怎么配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring mvc的静态资源拦截器怎么配置相关的知识,希望对你有一定的参考价值。

参考技术A

初学者基本上使用1,2,3方案:

    所有请求全部拦截,都在spring mvc 处理,静态资源如下配置

    <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/>  

    所有请求全部拦截,但是在web.xml中添加对静态资源的默认访问,如下

     <servlet-mapping>
         <servlet-name>default</servlet-name>
         <url-pattern>*.jpg</url-pattern>
     </servlet-mapping>

    所有请求全部拦截,在springmvc配置文件中添加如下,这种方式对spring版本必须要求3.0.5及以上。

    <mvc:default-servlet-handler/>

    然后是我极力推荐的一种,web.xml中配置DispatcherServlet的时候mapping如下配置,url-pattern不要全部拦截,把需要springmvc处理的请求添加自定义头。这种方法性能最好。

     <servlet-mapping>
            <servlet-name>spring</servlet-name>
            <url-pattern>/自定义</url-pattern>
     </servlet-mapping>

Spring MVC关于静态资源的过滤(详解)(或者叫做拦截器)

1.使用tomcat默认的servlet进行匹配配置在web.xml当中代码如下

<!-- 激活tomcat的defaultservlet拦截静态资源 --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern>
</servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern>
</servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern>
</servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern>
</servlet-mapping>

但是这种方法肯定是过于繁琐,在项目当中肯定是并不常用的。

2.使用SpringMVC进行配置,用特别的mvc标签进行判断加载,

通过配置来告诉前端控制器,不要拦截静态资源请求。方式有三种: 2.(1). 使用<mvc:resources>标签配置 SpringMVC3.0开始提供了<mvc:resources>标签,就是用来定义对静态资源的 访问的。 书写形式: <mvc:resources location="" mapping=""></mvc:resources> 属性: » location:表示静态资源本地真实路径,例如/static/js/,那就表示         webapp下的这个目录中的资源不会拦截,但是注意不包括子目录 » mapping:表示映射的虚拟路径 通过配置来告诉前端控制器,不要拦截静态资源请求。方式有三种: 2)使用<mvc:resources>标签配置 示例:
<!-- 不拦截/static/js/目录下的所有文件 -->
<mvc:resources location="/static/js/" mapping="/static/js/**"></mvc:resources>
<!-- 不拦截所有以.js为后缀名的请求 -->
<mvc:resources location="/" mapping="/**/*.js"/>
<!-- 编写多个标签按照静态资源的类型进行过滤 -->
<mvc:resources location="/static/js/"
mapping="/static/js/**"></mvc:resources>
<mvc:resources location="/static/css/"
mapping="/static/css/**"></mvc:resources>
<mvc:resources location="/static/images/"
mapping="/static/images/**"></mvc:resources>
<!-- 可以一次性过滤所有静态资源 -->
<mvc:resources location="/static/" mapping="/static/**"/>
通过配置来告诉前端控制器,不要拦截静态资源请求。方式有三种: 2)使用<mvc:resources>标签配置 实际应用:在springmvc.xml中:
<!-- 过滤静态资源 --> <mvc:resources location="/static/" mapping="/static/**"/>

3.

使用 <mvc:default-servlet-handler /> 标签(推荐) default-servlet-handler将在SpringMVC上下文中定义一个 DefaultServletHttpRequestHandler,它会对进入DispatcherServlet的请求进 行筛选,如果发现是没有经过映射处理的请求,将该请求交由WEB应用服务器默 认的Servlet处理。如果不是静态资源的请求,才由DispatcherServlet继续处理。 一般WEB应用服务器默认的Servlet的名称都是default。 应用:在 springmvc.xml 中:
<!-- 过滤静态资源 --> <mvc:default-servlet-handler />
注意,该标签需要搭配annotation-driven一起使用!否则会出现解析错误。

如下图:

以上是关于spring mvc的静态资源拦截器怎么配置的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC关于静态资源的过滤(详解)(或者叫做拦截器)

Spring MVC关于静态资源的过滤(详解)(或者叫做拦截器)

Spring MVC关于静态资源的过滤(详解)(或者叫做拦截器)

Spring MVC关于静态资源的过滤(详解)(或者叫做拦截器)

spring拦截器排除 静态资源

Spring MVC中处理静态资源的多种方法