SpringMCVC拦截器不拦截静态资源

SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决:

方案一、拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml)

1 <mvc:resources location="/" mapping="/**/*.js"/>

2 <mvc:resources location="/" mapping="/**/*.css"/>

3 <mvc:resources location="/assets/" mapping="/assets/**/*"/>

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

5

6 <mvc:interceptors>

7     <mvc:interceptor>

8         <mvc:mapping path="/**/*"/>

9         <mvc:exclude-mapping path="/**/fonts/*"/>

10         <mvc:exclude-mapping path="/**/*.css"/>

11         <mvc:exclude-mapping path="/**/*.js"/>

12         <mvc:exclude-mapping path="/**/*.png"/>

13         <mvc:exclude-mapping path="/**/*.gif"/>

14         <mvc:exclude-mapping path="/**/*.jpg"/>

15         <mvc:exclude-mapping path="/**/*.jpeg"/>

16         <mvc:exclude-mapping path="/**/*login*"/>

17         <mvc:exclude-mapping path="/**/*Login*"/>

18         <bean class="com.luwei.console.mg.interceptor.VisitInterceptor"></bean>

19     </mvc:interceptor>

20 </mvc:interceptors>

方案二、使用默认的静态资源处理Servlet处理静态资源(涉及spring-mvc.xml, web.xml)

在spring-mvc.xml中启用默认Servlet

1 <mvc:default-servlet-handler/>

在web.xml中增加对静态资源的处理

1 <servlet-mapping>

2     <servlet-name>default</servlet-name>

3     <url-pattern>*.js</url-pattern>

4     <url-pattern>*.css</url-pattern>

5     <url-pattern>/assets/*"</url-pattern>

6     <url-pattern>/images/*</url-pattern>

7 </servlet-mapping>

但是当前的设置必须在Spring的Dispatcher的前面

方案三、修改Spring的全局拦截设置为*.do的拦截(涉及web.xml

1 <servlet>

2     <servlet-name>SpringMVC</servlet-name>

3     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

4     <init-param>

5         <param-name>contextConfigLocation</param-name>

6         <param-value>classpath:spring-mvc.xml</param-value>

7     </init-param>

8     <load-on-startup>1</load-on-startup>

9     <async-supported>true</async-supported>

10 </servlet>

11 <servlet-mapping>

12     <servlet-name>SpringMVC</servlet-name>

13     <url-pattern>*.do</url-pattern>

14 </servlet-mapping>

这样设置,Spring就会只针对以'.do'结尾的请求进行处理,不再维护静态资源

针对这三种方案的优劣分析:

第一种方案配置比较臃肿,多个拦截器时增加文件行数,不推荐使用;第二种方案使用默认的Servlet进行资源文件的访问,Spring拦截所有请求,然后再将资源文件交由默认的Sevlet进行处理,性能上少有损耗;第三种方案Spring只是处理以'.do'结尾的访问,性能上更加高效,但是再访问路径上必须都以'.do'结尾,URL不太文雅;

SpringMCVC拦截器不拦截静态资源的更多相关文章

  1. springboot拦截器拦了静态资源css,js,png,jpeg,svg等等静态资源

    1.在SpringBoot中自己写的拦截器,居然把静态资源也拦截了,导致了页面加载失败. package com.bie.config; import com.bie.component.MyLoca ...

  2. SpringBoot 2.x 自定义拦截器并解决静态资源访问被拦截问题

      自定义拦截器 /** * UserSecurityInterceptor * Created with IntelliJ IDEA. * Author: yangyongkang * Date: ...

  3. Spring boot自定义拦截器和拦截器重定向配置简单介绍

    大家好: 本文简单介绍一下用于权限控制的Spring boot拦截器配置,拦截器重定向问题. 开发工具:jdk1.8   idea2017(付费版,网上找的破解教程) 1,首先使用idea创建一个Sp ...

  4. SpringBoot系列(十一)拦截器与拦截器链的配置与使用详解,你知道多少?

    往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静 ...

  5. Struts2-整理笔记(五)拦截器、拦截器配置

    拦截器(Interceptor) 拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 拦截器的优点 简化了Action的实现 ...

  6. spring拦截器不拦截方法名原因

    开发一个基于注解的登录拦截器,遇到拦截器只能拦截controller不能拦截到具体的方法名,这样拦截器就完全没用,经过仔细摸索,DefaultAnnotationHandlerMapping和Anno ...

  7. SpringMVC 拦截器不拦截静态资源的三种处理方式

    SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决: 方案一.拦截器中增加针对静 ...

  8. spring mvc:拦截器不拦截静态资源的三种处理方式

    方案一.拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/* ...

  9. SpringMVC 拦截器不拦截静态资源的三种处理方式方法

    方案一.拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/* ...

随机推荐

  1. windows server 2008 R2之取消多余的安全配置

    一:取消IE浏览器的安全配置(使IE浏览器可以正常上网) 管理员禁用即可 二.取消关机时强制输入关机备注 运行gpedit.msc,选择计算机配置->管理模板->系统->提示“关机时 ...

  2. idc市场

    机房 idc服务商 ============================== 电信1.古城热线-西部数据中心于2001年正式投入运营,有经济技术开发区和高新技术产业开发区两个核心机房高新路电信广场 ...

  3. JavaScript图形库

    做前端少不了画图,html5 的 canva 很强大,可是如果所有需求都自己画图,恐怕会被 leader 炒掉.记录一下我用过的几个 2D 和 3D 的js图形库,各种功能.我就不分 2D 和 3D ...

  4. Padavan老毛子固件:17CE插件集成

    Padavan老毛子固件:17CE插件集成 1.老毛子路由设置:系统管理-服务-启动SSH服务器     以下链接下载 "winscp" http://down.orsoon.co ...

  5. docker内存监控与压测

    一直运行的docker容器显示内存已经耗尽,并且容器内存耗尽也没出现重启情况,通过后台查看发现进程没有占用多少内存.内存的监控使用的是cadvisor,计算方式也是使用cadvisor的页面计算方式, ...

  6. 使用Tensorflow操作MNIST数据

    MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会被用作深度学习的入门样例.而TensorFlow的封装让使用MNIST数据集变得更加方便.MNIST数据集是NIST数据集的 ...

  7. Linux背背背(4)vim操作

    目录 1.打开文件 2.vim的三种模式 3.扩展 (关于vi 和 vim 的区别,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.) 1 ...

  8. JS高级-虚拟DOM

    virtual dom 虚拟DOM是Vue和React的核心 用JS模拟DOM结构 DOM变化的相比,放在JS层来做 遇到问题 DOM操作是“昂贵”的,js运行效率高 尽量减少DOM操作,而不是“推到 ...

  9. 用户名、密码等15个常用的js正则表达式

    本文收集整理了15个常用的javaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份证号.URL地址. IPv4地址. 十六进制颜色. 日期. Q ...

  10. python中定义的颜色

    平时学习工作中,我们经常会接触到一些大佬写的Python实用工具,运行起来总会显示出五颜六色的背景,相关的定义在matplotlib模块中,为方便使用,这里给大家展示一下在这个模块中都定义了哪些选颜色 ...