@RequestBody 写与不写的区别
- 需要写
@RequestBody
:当请求contentType
为application/json,数据类型为json
时,json
格式如下:{"aaa":"111","bbb":"222"}
- 不需要写
@RequestBody
:当请求contentType
为application/x-www-form-urlencoded
或multipart/form-data
时,数据格式为aaa=111&bbb=222
- JQuery的ajax默认的ContentType的值为:application/x-www-form-urlencoded; charset=UTF-8,此格式为表单提交格式,数据为key1=value1&key2=value2的格式。虽然ajax的data属性值格式为:{key1:value1,key2:value2},但最后会转为key1=value1&key2=value2的格式提交到后台。
@Controller 与 @RestController应用场景
@Controller
一般应用在有返回界面的应用场景下。
- 例如,管理后台使用了
thymeleaf
作为模板开发,需要从后台直接返回Model
对象到前台,那么这时候就需要使用@Controller
来注解。
- @RestController 如果只是接口,那么就用
RestController
来注解。
- 例如前端页面全部使用了
Html
、Jquery
来开发,通过Ajax
请求服务端接口,那么接口就使用@RestController
统一注解。
如何使用@JsonFormat
依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
它只会在声明返回类型为json时,比如使用@ResponseBody返回json数据的时候,才会返回格式化的yyyy-MM-dd HH:mm:ss时间,如果直接使用System.out.println()输出的话,仍然是类似“Fri Dec 01 21:05:20 CST 2017”这样的时间样式。