spring拦截器和过滤器

一、spring拦截器应用

1、建立interceptor包,在此包下建立Interceptor类。以处理Ajax跨域请求为例写一个拦截器

在这里插入图片描述

继承HandlerInterceptor接口,此接口有3个方法:

preHandle:

	预处理,返回true表示流程继续,返回false表示不会继续处理(流程中断)
	
postHandle:

	后处理回调方法,发生在视图渲染之前。参数ModelAndView可以为空,不为空时会对数据进行处理或者视图渲染。
	
afterCompletion:

	整个请求处理完毕回调方法,即在视图渲染完毕时回调。
	
	以上三个方法对应整个http请求周期进行拦截:

preHandle:

	request请求到达DispatcherServlet(控制层)之前(Controller方法调用之前)

postHandle:

	response返回之后进行调用,但是在视图被渲染之前(Controller方法返回之后,还没有渲染到页面之前)

afterCompletion:

	在整个请求结束之后被调用,也就是在DispatcherServlet
	渲染了对应的视图之后执行(主要是用于进行资源清理工作)

2、注册拦截器到spring容器中

在这里插入图片描述

实现WebMvcConfigurer 接口,在重写的addInterceptors方法中,注册对应的拦截器

“new interceptor()”也可以写成自动装配的方式。
.addPathPatterns("/**");是用来指定要拦截的路径。
excludePathPatterns 用于排除要绕开的路径

 多个拦截器按照先后顺序组成一个拦截器链

二、spring过滤器应用

1、注解方式

(1)、定义一个过滤器配置类,用@Component注解放入spring容器中,用
@WebFilter注解指定过滤路径,实现Filter 接口,重写接口方法
这种注解的方式,指定不了顺序。

在这里插入图片描述

2、bean注入方式

(1)、自定义filter

在这里插入图片描述

(2)、在springboot启动类或者@Configuration配置类上配置一个过滤的bean

在这里插入图片描述

用FilterRegistrationBean来注册过滤器
可以利用ilter.setOrder(1);来指定过滤器顺序。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值