SpringMvc---MessageConverter
HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文
HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,
ResponseEntity
使用这些注解就能把控制器返回值直接显示在页面上,而不是被解析为视图。
1、@RequestBody
这个注解在参数上使用
@RequestBody可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,当前请求的请求体就会为当前注解所标识的形参赋值
@RequestMapping("/requestBody")
public String testMessage(@RequestBody String requestBody) {
// post将请求参数封装在请求体中,就能在请求体中发现参数键值对
System.out.println(requestBody);
return "requestBody";
}
页面中
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="text/html;UTF-8">
<title>Title</title>
</head>
<body>
<form th:action="@{/requestBody}" method="post">
用户名:<input type="text" name="username" ><br>
密 码:<input type="password" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>
2、RequestEntity
使用RequestEntity时,在控制器方法里面设置一个RequestEntity的String类型的数组作为参数,然后就能调用RequestEntity中的方法获取请求头请求体以及请求的类型等
RequestEntity封装请求报文的一种类型,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报文就会赋值给该形参,可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息
@RequestMapping("requestEntity")
public String testRequestEntity(RequestEntity<String> requestEntity){
System.out.println("请求头:"+requestEntity.getHeaders());
System.out.println("请求体:"+requestEntity.getBody());
return "requestEntity";
}
输出
请求头&#