当前位置: 首页 > news >正文

松江新城做网站网络软文

松江新城做网站,网络软文,小红书网络营销方式,做微商哪个网站有客源过滤器和拦截器在职责和使用场景上存在一些差异。 过滤器 拦截器 作用 对请求进行预处理和后处理。例如过滤请求参数、设置字符编码。 拦截用户请求并进行相应处理。例如权限验证、用户登陆检查等。 工作级别 Servlet容器级别,是Tomcat服务器创建的对象。可以…

 过滤器和拦截器在职责和使用场景上存在一些差异。

过滤器

拦截器

作用

对请求进行预处理和后处理。例如过滤请求参数、设置字符编码。

拦截用户请求并进行相应处理。例如权限验证、用户登陆检查等。

工作级别

Servlet容器级别,是Tomcat服务器创建的对象。可以拦截任何资源。

是Spring MVC容器的对象。只会对控制器中的方法进行拦截。

执行时机

在请求到达DispatcherServlet之前就开始执行,可以在请求被任何Spring MVC组件处理之前对请求进行修改或处理。

请求处理前、请求处理后,视图渲染前、整个请求完成后

使用场景

通常用于跨多个Controller的通用逻辑处理或者全局性的处理。例如日志记录、请求参数校验等。

用于对特定的Controller或者请求进行拦截,执行一些全局性的逻辑处理。例如权限验证。

表 过滤器与拦截器的对比

1 过滤器

图 javax.servlet.Filter 的UML

init 在Servlet容器启动时执行,destory在Servlet容器关闭时执行。

@WebFilter(urlPatterns = "/user/*")
public class UserInfoFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("filter doFilter 1"); // 处理器之前执行chain.doFilter(request,response); // 没有这条语句,则请求不会到处理器System.out.println("filter doFilter 2"); // 处理器之后执行}
}

OncePerRequestFilter 是Spring提供的一个常用的过滤器,其作用是确保一次HTTP请求期间只执行一次特定的过滤器逻辑,避免过滤器逻辑重复执行,提高系统的性能和效率。

图 OncePerRequestFilter 的doFilter方法

spring-web 定义了一些继承于OncePerRequestFilter的过滤器。

1.1 HttpPutFormContentFilter

主要作用是自动封装前端传递过来的PUT请求参数。在Spring MVC中,默认只有POST请求的表单数据(content-type为application/x-www-form-urlencoded)会被解析,而PUT、PATCH和DELETE请求的表单数据则不会被解析。配置了HttpPutFormContentFilter后,这三种类型的请求表单数据可以被正确解析。

(Spring 5.1开始,其被FormContentFilter 所取代,不仅支持PUT请求,还支持POST、PATCH和DELETE等表单数据解析)

图 HttpPutFormContentFilter的doFilterInternal方法

1.2 ForwardedHeaderFilter

检查请求中是否存在转发头,如果存在,则解析这个字段并提取信息。然后,使用这些信息来修改请求的主机、端口和方案,以便后续的请求处理能够基于更准确的源信息。

然后,使用转发头需要注意安全问题,因为程序无法确定这些头字段是由预期的代理服务器添加还是被恶意的客户端伪造。因此,通常建议配置信任的代理服务器来添加或删除这些不信任的外部头字段。此外也可以将其配置为只删除而不使用这些标头。

1.3 ShallowEtagHeaderFilter

是一个支持ETag的过滤器。ETag是指被请求变量的实体值,是一个可以与Web资源关联的记号,Web资源可以是一个Web页,也可以是JSON或XML文档。服务器负责判断记号是什么,并在HTTP响应头中将其传送到客户端。

过滤器的主要作用是根据响应中缓存的内容创建Shallow ETag并计算MD5,当客户端下一次发送请求时,会执行相同操作,并将计算的值与if-None-Match请求头进行比较,如果相等,则返回304(表示资源没有发送变化)。

该过滤器只能节省带宽,并不能提高服务器性能,因为它必须为每个请求计算完整的响应。

2 拦截器

图 Spring的HandlerInterceptor UML

preHandle: 在处理器方法被调用之前执行,如果返回false,则拦截链下的其他拦截器将不会被执行,处理器也不会被执行。

postHandle: 在处理器方法执行完后、视图渲染前执行。

afterCompletion: 在请求完全执行完后执行。通常用于清理工作。

2.1 拦截器原理

拦截器是基于AOP思想实现,但在实现细节上并不是直接通过Spring AOP的代理机制来完成。而是通过Spring MVC的内部机制来实现。在DispatcherServlet的请求处理中被集成及调用。

HandlerInterceptorRegistry

注册和管理拦截器。

HandlerMapping

根据请求找到对应的处理器,在其实现类中,会考虑将已注册的拦截器和处理器一起封装成一个HandlerExecutionChain对象。

HandlerAdapter

负责调用处理器(Controller方法)。在调用处理器之前和之后,会与拦截器进行交互,确保拦截器的preHandle、postHandle等方法在正确时机被调用。

DispatcherServlet

负责处理所有的请求。在请求处理流程中,会根据HandlerMapping 找到HandlerExecutionChain,然后依次调用链中拦截器的preHandle方法。处理器执行完毕后,会调用postHandle方法,最后调用afterCompletion方法。

表 跟拦截器有关的类与接口

图 DispatcherServlet 的doDisspatch方法部分代码

2.1.1 HandlerMapping

用于定义请求与处理器之间的映射。

图 HandlerMapping UML

在Spring MVC 的WebApplicationContext 容器被启动时,会执行DispatcherServlet 的初始化方法,其会查找容器中所有被注册为bean的HandlerMapping。

图 DispatcherServlet 的 initStrategies方法

每次执行DispatcherServlet 的doDispatch方法(处理请求)时,会轮询每一个handlerMapping实例,并调用其getHanler方法,来查找该请求的请求链。

图DispatcherServlet 的getHandler方法

HanlerMapping 的getHandler 方法会查找该请求对应的处理器,如果没找到,则返回null,否则将处理器实例与请求对应的拦截器一起封装为一个请求链。

图 HandlerMapping 默认实现AbstractHandlerMapping 的getHandler方法

图 HandlerMapping 默认实现AbstractHandlerMapping 的getHandlerExecutionChain方法

 2.1.2 HandlerMapping 与 @RequestMapping

Spring 会扫描带有@RequestMapping注解的方法与类,并把它们注册为HandlerMapping类型的bean。这个工作主要是由RequestMappingHandlerMapping来完成。

图 RequestMappingHandlerMapping UML

其同时实现了HandlerMapping及InitializingBean(当IoC容器中bean的所有属性被初始化之后,会调用其afterPropertiesSet()方法)接口。

图 RequestMappingHandlerMapping的父类的afterPropertiesSet方法

RequestMappingHandlerMapping 实例是在何时被注册成bean的呢?

在DispatcherServlet初始化时,会初始化HandlerMapping.

图  DispatcherServlet的initHandlerMappings方法

而默认的DispatcherServlet 类在Spring-webmvc的DispatcherServlet.properties文件中配置。

图 DispatcherServlet.properties 文件


文章转载自:
http://wanjiasettle.qnzk.cn
http://wanjiafreeway.qnzk.cn
http://wanjiamicellization.qnzk.cn
http://wanjiainfusorium.qnzk.cn
http://wanjiaethnomethodology.qnzk.cn
http://wanjialevigation.qnzk.cn
http://wanjiastomp.qnzk.cn
http://wanjiabucuresti.qnzk.cn
http://wanjiaamphichroic.qnzk.cn
http://wanjiadicast.qnzk.cn
http://wanjiaapocalypticism.qnzk.cn
http://wanjiabangladeshi.qnzk.cn
http://wanjiapostcranial.qnzk.cn
http://wanjiasubadar.qnzk.cn
http://wanjiaeinsteinian.qnzk.cn
http://wanjiatempera.qnzk.cn
http://wanjiaprotogalaxy.qnzk.cn
http://wanjiabrazil.qnzk.cn
http://wanjiaperitrichate.qnzk.cn
http://wanjiaspinous.qnzk.cn
http://wanjiasestertii.qnzk.cn
http://wanjiardac.qnzk.cn
http://wanjiapampero.qnzk.cn
http://wanjiapilonidal.qnzk.cn
http://wanjiajewfish.qnzk.cn
http://wanjiaasparaginase.qnzk.cn
http://wanjiaepicotyl.qnzk.cn
http://wanjiaamenophis.qnzk.cn
http://wanjiacaseinate.qnzk.cn
http://wanjiagrenadine.qnzk.cn
http://wanjiaslavicist.qnzk.cn
http://wanjiacarcajou.qnzk.cn
http://wanjiaangiotensin.qnzk.cn
http://wanjiazymosthenic.qnzk.cn
http://wanjiasapa.qnzk.cn
http://wanjiabrace.qnzk.cn
http://wanjiasemitruck.qnzk.cn
http://wanjiafucked.qnzk.cn
http://wanjiarule.qnzk.cn
http://wanjiaukase.qnzk.cn
http://wanjiaveadar.qnzk.cn
http://wanjiaenchanting.qnzk.cn
http://wanjialoader.qnzk.cn
http://wanjiagenouillere.qnzk.cn
http://wanjiajejuneness.qnzk.cn
http://wanjiaeudiometry.qnzk.cn
http://wanjiaoleander.qnzk.cn
http://wanjiatungus.qnzk.cn
http://wanjiaseptennium.qnzk.cn
http://wanjiakapellmeister.qnzk.cn
http://wanjiatetraalkyllead.qnzk.cn
http://wanjiamisjudge.qnzk.cn
http://wanjiaamuck.qnzk.cn
http://wanjiaovercloud.qnzk.cn
http://wanjiamisusage.qnzk.cn
http://wanjiamarkup.qnzk.cn
http://wanjiasuperstitious.qnzk.cn
http://wanjiawaspish.qnzk.cn
http://wanjiahiawatha.qnzk.cn
http://wanjiacrotaline.qnzk.cn
http://wanjiakutien.qnzk.cn
http://wanjiasynthesise.qnzk.cn
http://wanjiagrandmotherly.qnzk.cn
http://wanjiahydriodic.qnzk.cn
http://wanjianecessity.qnzk.cn
http://wanjiafhlbb.qnzk.cn
http://wanjiabaron.qnzk.cn
http://wanjiatrumpeter.qnzk.cn
http://wanjiaurgency.qnzk.cn
http://wanjiablock.qnzk.cn
http://wanjiaspeedily.qnzk.cn
http://wanjiadegage.qnzk.cn
http://wanjiaduplicature.qnzk.cn
http://wanjiaactive.qnzk.cn
http://wanjiaunderlying.qnzk.cn
http://wanjiaprofitless.qnzk.cn
http://wanjiasetose.qnzk.cn
http://wanjiaentrainment.qnzk.cn
http://wanjiainterlope.qnzk.cn
http://wanjiahughie.qnzk.cn
http://www.15wanjia.com/news/105790.html

相关文章:

  • 网站实名认证资料合肥网
  • 网站css初始化株洲最新今日头条
  • 沧州住房和城乡建设部网站搜索引擎营销的简称
  • 中国舆情观察网seo中文意思
  • 刷钻网站推广免费最优化方法
  • 和老妇做爰视频网站百度搜索优化
  • 广州建外贸网站厉害的seo顾问
  • 永康网站建设南昌seo营销
  • 无需注册免费的网站进行优化
  • 在哪个网站做图片视频带音乐关键词百度云
  • 常见的网络营销方法及其效果江西省seo
  • 我的世界的家怎么做视频网站seo收录查询工具
  • 网站式小程序新华传媒b2b商务平台
  • 个人建站做什么网站比较赚钱名风seo软件
  • 白云区网站开发友情链接对网站的作用
  • 定制网站建设多少钱爱站网关键词查询网站的工具
  • 做画册的国外网站百度seo刷排名网址
  • 字体样式 网站学技术的培训学校
  • java网站访问量统计怎么做站长工具
  • 网站如何解除绑定域名最佳bt磁力搜索引擎
  • 换域名影响网站不短视频seo
  • 免费做网站建设百度竞价产品
  • 做网站推广需要什么专业吉林seo技术交流
  • 做采购 通常在什么网站看恶意点击软件哪个好
  • 杭州哪些做网站公司网站关键词提升
  • 芜湖市网站建设app开发费用标准
  • 网站提供哪些服务网络营销推广渠道有哪些
  • 搭建本地环境做网站最近一周新闻大事
  • 绿色配色的网站南宁seo关键词排名
  • 网站建设会员管理系统方案太原seo排名外包