前端f12,网络-响应 里面是转化成的json格式数据{“aaa”:”123”,”bbb”:”234”},标头上是post,
就要用@requestbody注解来接收前端传来的请求体数据

image.png

@RequestBody接收的参数只能是一个对象,可以通过创建ViewObject对象来接收,但是对于各种不确定参数就需要非常多的ViewObject。
如果不用ViewObject,而是直接用原生Map map接收,一样需要一个个取出来:
image.png

目标方案

最终想要的效果是即使前端传json,后台先解析出来,再塞到方法参数中,这个过程是隐式完成,最终业务代码就可以非常简洁:
image.png

第一步:理解springmvc参数接收原理

因为springmvc本身是个庞大的架构体系,可以预知它对参数值的封装这个过程是通过某种设计模式完成的,而不是按代码顺序一步步写下来,这是读spring源码的一个方向。
从整个应用服务层面来看,请求体数据先进入tomcat(或其他),被封装形成基础request请求对象,然后经过filter过滤器,经过interceptor拦截器等,进入统一的DispatcherServlet(spring默认servlet),然后在DispatcherServlet中根据HandlerMapping找到匹配的Handler(也就是Controller中某一个方法),最后request请求对象交由匹配的这个Handler处理。
image.png

image.png

image.png