提示:个人学习笔记
HttpMessageConverter,报文信息转换器,将请求报文转化为Java对象,将Java对象转化为响应报文
- @RequestBody(注解,标识控制器方法的形参列表)
- RequestEntity(实体类型)
- @ResponseBody(注解,标识控制器方法)
- ResponseEntity(实体类型)
一、@RequestBody
控制器方法:
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String requestBody){
System.out.println("RequestBody:"+requestBody);
return "target";
}
视图页面:
<form th:action="@{/testRequestBody}" method="post">
username:<input type="text" name="username"><br>
password:<input type="text" name="password"><br>
<input type="submit" value="测试@RequestBody">
</form>
获取到当前请求体,将多个请求值进行拼接:
二、RequestEntity
控制器方法:
@RequestMapping("/testRequestEntity")
public String testResponseEntity(RequestEntity<String> requestEntity){
System.out.println("请求头:"+requestEntity.getHeaders());
System.out.println("请求体:"+requestEntity.getBody());
return "target";
}
视图层页面:
<form th:action="@{/testRequestEntity}" method="post">
username:<input type="text" name="username"><br>
password:<input type="text" name="password"><br>
<input type="submit" value="测试@RequestEntity">
</form>
获取到请求头信息getHeader()
和请求体信息getBody()
三、@ResponseBody
标识控制器方法,直接将控制器方法的返回值作为响应体响应到浏览器
@RequestMapping("/testResponseBody")
@ResponseBody //标识控制器方法
public String testResponseBody() {
return "target"; //直接将“target”字符串作为返回值响应到浏览器
}
@RequestMapping("/testResponseUser")
@ResponseBody //标识控制器方法
public User testResponseUser() {
return new User("chen","op","female",90);
}
将对象作为返回值响应到浏览器(json对象):
上述返回的是json对象,在springmvc工程中处理json数据需要执行如下步骤:
1 使用到Jackson,引入相关Jackson依赖
pom.xml文件中:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.1</version>
</dependency>
2 在核心配置文件中开启注解驱动<mvc:annotation-driven/>
3 采用@ResponseBody
标识控制器方法
4 将JavaBean对象直接返回,此时会将对象转化为json格式数据响应到浏览器