gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 31 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章SpringMVC 拦截器不拦截静态资源的三种处理方式方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
< mvc:resources location = "/" mapping = "/**/*.js" />
< mvc:resources location = "/" mapping = "/**/*.css" />
< mvc:resources location = "/assets/" mapping = "/assets/**/*" />
< mvc:resources location = "/images/" mapping = "/images/*" cache-period = "360000" />
 
< mvc:interceptors >
   < mvc:interceptor >
     < mvc:mapping path = "/**/*" />
     < mvc:exclude-mapping path = "/**/fonts/*" />
     < mvc:exclude-mapping path = "/**/*.css" />
     < mvc:exclude-mapping path = "/**/*.js" />
     < mvc:exclude-mapping path = "/**/*.png" />
     < mvc:exclude-mapping path = "/**/*.gif" />
     < mvc:exclude-mapping path = "/**/*.jpg" />
     < mvc:exclude-mapping path = "/**/*.jpeg" />
     < mvc:exclude-mapping path = "/**/*login*" />
     < mvc:exclude-mapping path = "/**/*Login*" />
     < bean class = "com.luwei.console.mg.interceptor.VisitInterceptor" ></ bean >
   </ mvc:interceptor >
</ mvc:interceptors >

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

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

?
1
< mvc:default-servlet-handler />

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

?
1
2
3
4
5
6
7
< servlet-mapping
   < servlet-name >default</ servlet-name
   < url-pattern >*.js</ url-pattern
   < url-pattern >*.css</ url-pattern
   < url-pattern >/assets/*"</ url-pattern
   < url-pattern >/images/*</ url-pattern
</ servlet-mapping >

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
< 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 >
   < async-supported >true</ async-supported >
</ servlet >
< servlet-mapping >
   < servlet-name >SpringMVC</ servlet-name >
   < url-pattern >*.do</ url-pattern >
</ servlet-mapping >

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

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

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

综上所述,推荐使用第二和第三中方案 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:http://www.cnblogs.com/banning/p/6195072.html 。

最后此篇关于SpringMVC 拦截器不拦截静态资源的三种处理方式方法的文章就讲到这里了,如果你想了解更多关于SpringMVC 拦截器不拦截静态资源的三种处理方式方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com