1.Http请求 的编码方式有3种
当前台界面使用GET或POST方式提交数据时,request的body部分的数据编码格式由header部分的Content-Type指定,有以下几种方式
- application/x-www-form-urlencoded(默认)
- multipart/form-data (form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件)
- application/json、application/xml等格式的数据
2.Spring MVC 用来处理请求参数的注解
@PathVariable @RequestParam @ModelAttribute @RequestBody
Spring MVC 提供了多个注解来获取get,post等请求中的参数。不同注解可以处理的参数是根据请求的编码方式来决定的。即根据request header content-type 值来判断。(换句话理解:Spring MVC项目中 controller中方法接收参数有多种方式,具体采用哪种方式是根据 请求的编码方式来决定的)
@PathVariable 用来获取请求url中的参数
@RequestParam注解 如果get或post请求中 参数是 application/x-www-form-urlencoded或者multipart/form-data编码方式,@RequestParam 可以处理。 RequestParam可以接受简单类型的属性,也可以接受对象类型 。 RequestParam实质是将Request.getParameter() 中的Key-Value参数Map 利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。get方式中query String的值,和post方式中body data的值都会被Servlet接受到并转化到Request.getParameter()参数集中,所以@RequestParam可以获取的到
@RequestBody 用来处理以application/json、application/xml等格式提交的数据
@ModelAttribute 注解类型将参数绑定到Model对象
3.Spring MVC 控制器方法的两种返回值
Spring MVC 在使用 @RequestMapping 后,返回值通常解析为跳转路径,
但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,会直接返回 json 数据,写入 HTTP response body 中。 比如异步获取 json 数据。