Spring中提交的页面对象(json)转化为request对象处理过程

1.DispatcherServlet类
doService方法:
doDispatch(request, response);处理
->doDispatch方法:
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());处理(RequestMappingHandlerAdapter)
2.RequestMappingHandlerAdapter类
handleInternal方法:
mav = invokeHandlerMethod(request, response, handlerMethod);处理
->invokeHandlerMethod方法
invocableMethod.invokeAndHandle(webRequest, mavContainer);处理
3.ServletInvocableHandlerMethod类
invokeAndHandle方法:
Object returnValue = invokeForRequest(webRequest, mavContainer, providedArgs);处理
->resolveArgument方法:
resolver.resolveArgument(parameter, mavContainer, webRequest, binderFactory);处理
4.RequestResponseBodyMethodProcessor类
resolveArgument()方法:
Object arg = readWithMessageConverters(webRequest, parameter, parameter.getNestedGenericParameterType());处理
->readWithMessageConverters方法
Object arg = readWithMessageConverters(inputMessage, parameter, paramType);处理
->readWithMessageConverters()方法

for (HttpMessageConverter<?> converter : this.messageConverters) {
				Class<HttpMessageConverter<?>> converterType = (Class<HttpMessageConverter<?>>) converter.getClass();
				GenericHttpMessageConverter<?> genericConverter =
						(converter instanceof GenericHttpMessageConverter ghmc ? ghmc : null);
				if (genericConverter != null ? genericConverter.canRead(targetType, contextClass, contentType) :
						(targetClass != null && converter.canRead(targetClass, contentType))) {
						// convert是MappingJackson2MessageConverter时
					if (message.hasBody()) {
						HttpInputMessage msgToUse =
								getAdvice().beforeBodyRead(message, parameter, targetType, converterType);
						// 这里将json对象生成java对象
						body = (genericConverter != null ? genericConverter.read(targetType, contextClass, msgToUse) :
								((HttpMessageConverter<T>) converter).read(targetClass, msgToUse));
						body = getAdvice().afterBodyRead(body, msgToUse, parameter, targetType, converterType);
					}
					else {
						body = getAdvice().handleEmptyBody(null, message, parameter, targetType, converterType);
					}
					break;
				}
			}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值