springmvc中一次请求再次深入学习

上一篇源码中我们分析到ServletInvocableHandleMethod

public final void invokeAndHandle(
NativeWebRequest request, ModelAndViewContainer mavContainer,
Object... providedArgs) throws Exception {

Object returnValue = invokeForRequest(request, mavContainer, providedArgs);
setResponseStatus((ServletWebRequest) request);
if (returnValue == null) {
if (isRequestNotModified(request) || hasResponseStatus() || mavContainer.isRequestHandled()) {
mavContainer.setRequestHandled(true);
return;
}
}
mavContainer.setRequestHandled(false);
try {

              //这里采用结果返回器进行解析
returnValueHandlers.handleReturnValue(returnValue, getReturnType(), mavContainer, request);
} catch (Exception ex) {

throw ex;
}
}


再分析它了invokeForRequest方法:

public final Object invokeForRequest(NativeWebRequest request,
 ModelAndViewContainer mavContainer,
 Object... providedArgs) throws Exception {

          //这里是为了获取要调用controller方法中参数它包括get请求post请求中及方法中的参数
Object[] args = getMethodArgumentValues(request, mavContainer, providedArgs);
Object returnValue = invoke(args);
return returnValue;
}


再进入到它的invoke方法中:

private Object invoke(Object... args) throws Exception {
ReflectionUtils.makeAccessible(this.getBridgedMethod());//这里就是让私用方法可以使用
try {
return getBridgedMethod().invoke(getBean(), args);//这里的getBridgedMethod()方法返回的就是Method对象
}
catch (Exception e) {
throw new Exception(msg, e);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值