spring mvc 框架中拦截web请求是通过什么技术?

 我来答
匿名用户
2021-04-29
展开全部

可以是基于url 

基于URL

也可以是基于Spring boot

1.拦截器介绍


Web开发中,可以用Filter(过滤器)和 HandlerInterceptor(拦截器) 来过滤web请求,都能对客户端发来的请求进行处理。


过滤器:是一个服务器端的组件,它可以截取用户端的请求和响应信息,并对这些信息过滤。


Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现,底层通过动态代理模式完成。听说:只有经过DispatcherServlet 的请求,才会走拦截器链,我们自定义的Servlet 请求是不会被拦截的


参考 Spring:过滤器filter、拦截器interceptor、和AOP的区别与联系


原理

Filter:过滤器是基于函数回调。

HandlerInterceptor:拦截器是基于java的反射机制,使用代理模式

作用域不同

Filter:过滤器依赖于servlet容器,只能在 servlet容器,web环境下使用。跟Spring没有关系

HandlerInterceptor:拦截器依赖于spring容器,可以在spring容器中调用,不管此时Spring处于什么环境

过滤内容

Filter:过滤器可以对几乎所有的请求起作用(可以保护资源)

HandlerInterceptor:拦截器只能对action起作用

细粒度的不同

Filter:过滤器的控制比较粗,只能在请求进来时进行处理,对请求和响应进行包装

HandlerInterceptor:拦截器提供更精细的控制,可以在controller对请求处理之前或之后被调用,也可以在渲染视图呈现给用户之后,以及request全部结束之后,都可以拦截到

中断

Filter:过滤器比较复杂,需要处理请求和响应对象来引发中断,需要额外的动作,比如将用户重定向到错误页面

HandlerInterceptor:不能通过拦截器修改request内容,但是可以通过抛出异常或者preHandle方法内返回 false 进行中断来暂停request执行   

小结

如果过滤器和拦截器同时存在:执行顺序:过滤前-拦截前-Action处理-拦截后-过滤后

替代:过滤器能做的,拦截器基本上都能做

————————————————

原文链接:https://blog.csdn.net/dreamstar613/article/details/106746128

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式