ajax请求在springMvc里的执行顺序

Filter start
Interceptor preHandle
RequestBodyAdvice supports
RequestBodyAdvice beforeBodyRead
RequestBodyAdvice supports
RequestBodyAdvice afterBodyRead
controller 方法上的自定义切面 执行
controller 方法执行
ResponseBodyAdvice supports
ResponseBodyAdvice beforeBodyWrite
Interceptor postHandle
Interceptor afterCompletion
Filter end

理解如下:

Filter和Interceptor 是平时所熟悉的,先进后出的规则。

Interceptor 执行完成后执行RequestBodyAdvice,

RequestBodyAdvice里面可以把前端传入的inputMessage数据进行增删改查,可以构造所需body数据,并转换成@RequestBody注解的javabean。也就是在这里,spring把前端传入的json等格式数据转换成javabean

controller 方法上的自定义切面,使用@Aspect、@Component、@Pointcut、@Around配合做的AOP,在controller 方法前执行,

在AOP里面,可以调用return ProceedingJoinPoint.proceed();执行接下来的controller 方法,但所在的方法必须返回proceed()方法执行的结果,否则前端接收不到返回值。注:此处暂未想到业务场景

controller 方法执行,也就是业务代码了,不赘述了。

ResponseBodyAdvice 可以操作controller方法返回的值,例如可以封装成统一的Result格式、对数据进行加密。

备注:RequestBodyAdvice 和ResponseBodyAdvice 的supports方法里面是判断代码是否进入beforeBodyRead、afterBodyRead、beforeBodyWrite的前提,一般是判断方法、参数上是否有指定的注解

此处根据方法执行的日志,加深对http的了解程度。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值