SpringMvc中的请求参数传递和mybatis中的参数传递
1.SpringMvc中的请求参数传递1.1 请求行中的参数传递传递单个值传递的值和形参上的形参名称要匹配否则使用RequestParam(value xxx)注解进行指定传递对象属性对象作为接收对象需要无参构造器和setter方法进行接收传递的值要和对象的属性名称要一样进行匹配SpringMvc底层会创建一个pojo对象然后调用其setter方法进行赋值操作传递复合型参数进行传递传递和接收是一个数组类型传递的是一个集合类型和接收的是一个集合类型注意要写RequestParam这个注解1.2请求体中进行参数传递json格式中[]代表数组或者集合{}代表一个对象请求体中获取数据需要配合RequestBody注解1.3请求映射底层原理传输数据不是json时1.SpringMVC 先创建一个 Student 对象它发现你方法需要 Student student于是会使用 new Student() 调用无参构造方法先创建对象。2. 读取所有请求参数比如 usernamedillSpringMVC 内部会遍历这些参数然后尝试找有没有匹配的属性。3. 用属性名匹配类中的属性名JavaBean 规范请求参数叫 username它去找 Student 类有没有成员变量 private String username有没有对应的 setUsername(String xxx) 方法JavaBean setter 方法它发现你方法需要 Student student于是会使用 new Student() 调用无参构造方法先创建对象。4.所有匹配成功的字段都会被自动注入进来总结一句话回答SpringMVC 使用 WebDataBinder 实现请求参数到 JavaBean 的属性封装。它通过反射机制查找对应的 setter 方法根据请求参数名与 JavaBean 属性名的匹配关系自动赋值。传输数据时json时SpringMVC 检测到你用了 RequestBody说明你要从 **请求体中** 获取数据而不是传统的表单参数它检查请求头的 Content-Type 是 application/json所以就知道请求体是 JSON 格式SpringMVC 会调用 HttpMessageConverter 中的 **Jackson 转换器**默认就是 MappingJackson2HttpMessageConverter它会用 **Jackson** 来把 JSON 转成 Java 对象它就把 JSON 转成了 Student 对象并传给你的方法总结一句话当传递 JSON 数据时SpringMVC 使用 RequestBody 和 HttpMessageConverter 消息转化器 机制将 JSON 请求体自动反序列化为 Java 对象底层默认使用的是 MappingJackson2HttpMessageConverter。参数传递实现前端参数传递是url拼接参数或表单参数使用RequestParam注解json格式的数据使用RequestBody接收普通类型参数类型通过ConverterS, T这个接口进行类型转化json格式的参数通过HttpMessageConverter自动反序列化成对象实现参数传递1.4响应和底层流程⭐响应实现流程 和 ResponseBody的作用SpringMVC在响应阶段会根据处理器方法的返回类型和是否标注ResponseBody注解自动选择合适的处理方式。- 如果方法上加了ResponseBodySpringMVC会使用HttpMessageConverter如Jackson将返回对象或集合序列化为JSON格式输出。如果返回的是字符串则作为纯文本响应。- 如果方法没有加ResponseBody并返回一个字符串SpringMVC会通过视图解析器ViewResolver将字符串作为视图名查找对应页面跳转。- 本质上SpringMVC通过HttpMessageConverter和ViewResolver这两套机制统一管理了数据响应和页面跳转。