前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中过滤器、拦截器的应用场景,以及二者的区别和执行流程

Java中过滤器、拦截器的应用场景,以及二者的区别和执行流程

作者头像
用户1289394
发布2021-01-20 09:47:41
4.9K0
发布2021-01-20 09:47:41
举报
文章被收录于专栏:Java学习网Java学习网

首先,来看下过滤器、拦截器是什么?

过滤器这里指Servlet过滤器,它是在java Servlet中定义的,能够对Servlet容器中的请求和响应对象,进行检查和修改,它不会生成request和response对象,它只起到过滤的作用;

拦截器这里指Spring MVC中的拦截器(Interceptor),它类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。

一、应用场景

1、过滤器的应用:字符编码转换,敏感词过滤、登陆权限验证、资源访问权限等;

2、拦截器的应用:AOP、需要有一些业务逻辑(需要注入Bean等)。

二、区别

1、过滤器配置再web.xml中、拦截器配置springmvc的配置文件中(即在DispatcherServlet的contextConfigLocation属性指定文件所在位置,默认加载的是:/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml));

2、过滤器基于函数回调、拦截器基于反射;

3、过滤器几乎对所有请求起作用,拦截器只对目标执行方法(action方法)起作用;

4、过滤器对请求进行预处理、再交给Servlet处理并且生成响应,最后Filter再对服务器响应进行后处理;

拦截器可以在方法执行前调用(preHandle),方法执行后调用(postHandle),视图页面渲染后调用(afterCompletion)。

三、执行流程

1、过滤器执行流程:

客户端发起请求的时候,首先是经过了Filter过滤器,处理了request请求,然后去执行了我们的servlet/jsp,当执行完毕后,我们的response响应也经过了过滤器,这里经过过滤器的时候是从放行后面开始执行的,也就是处理了response响应。

2、拦截器执行流程:

(1)、程序先执行preHandle()方法,如果该方法的返回值为true,则程序会继续向下执行处理器中的方法,否则将不再向下执行;

(2)、在业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向客户端返回响应;

(3)、在DispatcherServlet处理完请求后,才会执行afterCompletion()方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档