🔔
为实现浏览器与控制器类之间的 JSON 数据交互,
Spring MVC 提供了 MappingJackson2HttpMessageConverter 实现类默认处理 JSON 格式请求响应。该实现类利用 Jackson 开源包读写 JSON 数据,将 Java 对象转换为 JSON 对象和 XML 文档,同时也可以将 JSON 对象和 XML 文档转换为 Java 对象。
在使用注解开发时需要用到两个重要的 JSON 格式转换注解,
分别是 @RequestBody 和 @ResponseBody
-
@RequestBody:用于将请求体中的数据绑定到方法的形参中,该注解应用在方法的形参上
-
@ResponseBody:用于直接返回 return 对象,该注解应用在方法上。
1.1 引入jackson
项目依赖于:
jackson-databind-2.12.0.jar jackson-annotations-2.12.0.jar jackson-core-2.12.0.jar
在pom.xml文件中只需要加入下面的依赖 其它两个会自动下载
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.0</version>
</dependency>
1.2 编写POJO
@Data
public class Good {
String name;
double price;
int num;
}
1.3 编写Controller
@Controller
public class GoodController {
@PostMapping("/goods")
public ModelAndView test(@RequestBody Good good){
ModelAndView mv=new ModelAndView();
mv.addObject("msg",
"商品名称:"+good.getName()+
",商品价格:"+good.getPrice()+
",商品数量:"+good.getNum());
mv.setViewName("good");
return mv;
}
//使用idea中 RestfulTool工具插件设置
//假如写了一个相同的地址会执行哪一个?
@GetMapping("/goods")
public Good test2(){
Good g=new Good();
g.setName("苹果");
g.setPrice(89);
g.setNum(20);
return g;
}
@RequestMapping(value = "/good/save",method={RequestMethod.POST})
@ResponseBody
public Good save(@RequestBody Good good){
System.out.println(good.toString());
return good;
}
}
good页面:
<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %>
<html>
<body>
<h1>商品详情页</h1>
<p>${msg}</p>
</body>
</html>
1.4 Map接收
@RequestMapping(value = "/good/save2",method={RequestMethod.POST})
@ResponseBody
public Map test (@RequestBody Map map){
//第一种方式
/* Set<Map.Entry<String, Object>> set=map.entrySet();;
Iterator<Map.Entry<String, Object>> it=set.iterator();
while(it.hasNext()){
Map.Entry<String, Object> entry=it.next();
System.out.println(entry.getKey()+"=="+entry.getValue());
}*/
//第二种方式遍历
/* Set<String> s1=map.keySet();
for (String key : s1) {
Object value = map.get(key);
System.out.println(key+"==="+value);
}*/
// 第三种方式遍历 lamubda表达式
map.forEach((key,value)->{
if(key !=null){
System.out.println(key+"==="+value);
}
});
return map;
}