拦截器底层原理

-------------------siwuxie095

拦截器底层原理

拦截器的底层主要使用了两个原理:

(1)AOP 思想

(2)责任链模式

AOP 思想

AOP 是面向切面(方面)编程,若要在基本功能之上进行扩展,AOP 可以

不通过修改源代码的方式来扩展功能

责任链模式

1、在
Java 中有 23 种设计模式,责任链模式是其中的一种

2、责任链模式和过滤器链很相似

1)过滤器链

一个请求可以有多个过滤器进行过滤,每个过滤器只有做放行操作

才能到下一个过滤器

2)责任链模式

要执行多个操作,如:添加、修改、删除三个操作

首先执行添加操作,添加操作执行之后,做类似于放行操作;

然后执行修改操作,修改操作执行之后,做类似于放行操作;

最后执行删除操作,删除操作执行之后,做类似于放行操作

拦截器底层原理的具体应用

1、拦截器的执行

在 Action 对象创建之后,在 Action 方法执行之前

2、在
Action 方法执行之前,执行默认拦截器,执行过程使用 AOP

思想。注意:在
Action 中没有直接调用拦截器的方法,而是通过配

置文件的方式中进行操作

3、在执行拦截器时,执行很多的拦截器,这个过程使用责任链模式

「注意:默认拦截器中也有很多拦截器」

假如要执行三个拦截器:

首先执行拦截器
1,拦截器 1 执行之后,放行;

然后执行拦截器
2,拦截器 2 执行之后,放行;

最后执行拦截器
3,拦截器 3 执行之后,放行;

三个拦截器执行完毕后,执行
Action 方法

4、查看源代码

从核心过滤器的
doFilter() 方法进入

(1)执行
Action

(2)继续执行

(3)使用动态代理的方式创建
Action 对象

(4)执行 Action 方法

(5)类似于放行操作

(6)执行拦截器

【made by siwuxie095】

时间: 2025-01-14 00:15:57

拦截器底层原理的相关文章

Mybatis最入门---分页查询(拦截器分页原理及实现)

[一步是咫尺,一步即天涯] 前文,我们演示了物理分页的Sql实现方式,这种方式使得我们每次在编写查询服务时,不断的重复造轮子.这样的代码实现方式就显得十分的笨拙了.本文是Mybatis分页查询的最后一片内容,我们将介绍基于拦截器的,精巧的实现方式.在阅读这篇文章之前,强烈建议各位看官能够先阅读上文.这样就能对下文我们提及的各种对象及他们之间的关系有一个清晰的关系.好了,废话不多讲,开始我们的正文部分吧. 准备工作: a.操作系统 :win7 x64 b.基本软件:MySQL,Mybatis,SQ

【ssm】拦截器的原理及实现

一.背景: 走过了双11,我们又迎来了黑色星期五,刚过了黑五,双12又将到来.不管剁手的没有剁手的,估计这次都要剁手了!虽然作为程序猿的我,没有钱但是我们长眼睛了,我们关注到的是我们天猫.淘宝.支付宝之间的登录系统的关联,即只要我们在一个系统上登陆过了,在同门户的其他系统上就不用再次登陆了,这个涉及到的是我们的接下来下次要聊到的--SSO(单点登录):而这次我们要聊的,是我们的拦截器,因为只要我们没有登录,随便输入一个合法的地址涉及到订单或者隐私信息的内容时,就会被干到登录页面上去,这就是我们的

【SSM】拦截器的原理、实现

一.背景: 走过了双11,我们又迎来了黑色星期五,刚过了黑五,双12又将到来.不管剁手的没有剁手的,估计这次都要剁手了!虽然作为程序猿的我,没有钱但是我们长眼睛了,我们关注到的是我们天猫.淘宝.支付宝之间的登录系统的关联,即只要我们在一个系统上登陆过了,在同门户的其他系统上就不用再次登陆了,这个涉及到的是我们的接下来下次要聊到的--SSO(单点登录):而这次我们要聊的,是我们的拦截器,因为只要我们没有登录,随便输入一个合法的地址涉及到订单或者隐私信息的内容时,就会被干到登录页面上去,这就是我们的

caffe中HingeLossLayer层原理以及源码分析

输入: bottom[0]: NxKx1x1维,N为样本个数,K为类别数.是预测值. bottom[1]: Nx1x1x1维, N为样本个数,类别为K时,每个元素的取值范围为[0,1,2,-,K-1].是groundTruth. 输出: top[0]: 1x1x1x1维, 求得是hingeLoss. 关于HingeLoss: p: 范数,默认是L1范数,可以在配置中设置为L1或者L2范数. :指示函数,如果第n个样本的真实label为k,则为,否则为-1. tnk: bottom[0]中第n个样

Mybatis 拦截器实现原理

Mybatis 拦截器实现原理 标签(空格分隔): mybatis 拦截器概述 像springmvc一样,mybatis也提供了拦截器实现,只是他们拦截的对象不同. mybatis给Executor.StatementHandler.ResultSetHandler.ParameterHandler提供了拦截器功能, Executor提供了增删改查的接口. StatementHandler负责处理Mybatis与JDBC之间Statement的交互. ResultSetHandler负责处理St

网络基础七层原理(重点)

网络基础七层原理一.什么是网络基础七层原理二.七层模型的起源三.七层模型的原理和协议四.七层模型有何用处1.七层模型,亦称OSI(Open System Interconnection).参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型.它是一个七层的.抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议.2.OSI的大部分设计工作实际上只是Honeywell Information System 公司的一个小组完成的,

struts2拦截器实现原理

拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理.同时,拦截器也可以让你将通用的代码模块化并作为可重用的类.Struts2中的很多特性都是由拦截器来完成的.拦截是AOP的一种实现策略.在Webwork的中文文档的解释为:拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同

拦截器实现原理

拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理.同时,拦截器也可以让你将通用的代码模块化并作为可重用的类.Struts2中的很多特性都是由拦截器来完成的.拦截是AOP的一种实现策略.在Webwork的中文文档的解释为:拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同

Spring MVC--底层原理

Spring MVC处理的流程: 具体执行步骤如下: 1 首先用户发送请求给前端控制器,前端控制器根据请求信息(如url)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分:图中的1.2步骤 2 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在spring web mvc中叫命令对徐爱那个,并进行验证,然后将命令对象委托给业务对象进行处理:处理完毕后返回一个ModelAndView(模型数据和逻辑视图名):图中3.4.5步骤 3