Spring MVC数据绑定和响应——数据回写(二)JSON数据的回写

项目中已经导入了Jackson依赖,可以先调用Jackson的JSON转换的相关方法,将对象或集合转换成JSON数据,然后通过HttpServletResponse将JSON数据写入到输出流中完成回写,具体步骤如下。

1、修改文件DataController.java,在DataController类中新增showDataByJSON()方法,用于将对象转换成JSON数据并写入输出流中完成回写。

java 复制代码
@RequestMapping("showDataByJSON")
public void showDataByJSON(HttpServletResponse response)  {
    try {	ObjectMapper om = new ObjectMapper();
        User user = new User();user.setUsername("heima");	user.setPassword("666");
        String ujson = om.writeValueAsString(user);
        response.getWriter().print(ujson);
    } catch (IOException e) {	 e.printStackTrace();	}}

2、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/showDataByJSON。访问地址后,执行了showDataByJSON()方法,方法执行后将User对象的数据转换成JSON格式的数据输出到请求页面中了。

一、@ResponseBody注解的使用范围

@ResponseBody注解可以标注在方法和类上,当标注在类上时,表示该类中的所有方法均应用@ResponseBody注解。如果需要当前类中的所有方法均应用@ResponseBody注解,也可以使用@RestController注解。

二、@ResponseBody注解的2个使用要求

使用@ResponseBody注解,项目至少需要符合2个要求,分别如下所示。

• 项目中有转换JSON相关的依赖。
• 可以配置转换JSON数据的消息类型转换器。

针对上述两个要求,chapter12项目都已经满足,项目的pom.xml文件中引入了Jackson相关的依赖,可以用于转换JSON;Spring MVC的配置文件中配置的<mvc:annotation-driven />元素默认注册了Java数据转JSON数据的消息转换器。

接下来通过一个案例演示使用@ResponseBody注解回写JSON格式的对象数据和集合数据,案例具体实现步骤如下。

1、修改文件DataController.java,在DataController类中新增getUser()方法,用于返回JSON类型的User信息;新增addProducts()方法用于返回JSON类型的Product列表信息。

java 复制代码
@RequestMapping("showDataByJSON")
    public void showDataByJSON(HttpServletResponse response) {
        try {
            ObjectMapper om = new ObjectMapper();
            User user = new User();
            user.setUsername("heima");
            user.setPassword("666");
            String ujson = om.writeValueAsString(user);
            response.getWriter().print(ujson);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2、创建一个商品添加页面product_add.jsp,在product_add.jsp中创建一个表格,用于显示用户信息和添加商品信息。product_add.jsp的部分代码如下所示。

java 复制代码
<script type="text/javascript">
      // 添加商品
      function addProducts() {
         var url="${pageContext.request.contextPath }/addProducts";
	$.get(url,function (products) {
	//将处理器返回的商品列表信息添加到表格中
	for (var i=0;i<products.length;i++) {
$("#products").append("<tr><td>"+products[i].proId+"</td>
              <td>"+products[i].proName+"</td></tr>");	} })	}
</script>

3、启动chapter12项目,在浏览器中访问商品添加页面product_add.jsp,访问地址为http://localhost:8080/chapter12/product_add.jsp。页面加载完,页面异步将用户的信息显示在单元格中,成功回写了User对象信息对应的JSON数据。

4、单击product_add.jsp页面显示效果图所示的"添加多个商品"按钮。单击"添加多个商品"按钮,程序成功回写了List对应的JSON数据。

相关推荐
2301_7807896615 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设16 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn16 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川16 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵16 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David17 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas10017 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin18 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质18 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
captain37619 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis