JSON数据处理

1.添加json依赖

springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据:

<!--spring-json依赖-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

2.注解

  • @RequestBody:作用是接收前端ajax传递给后端的json字符串,并将json格式的数据转为java对象

  • @ResponseBody:作用是将java对象转为json格式的数据传递给前台ajax

3.JSON、集合、对象三种数据处理

3.1.JSON数据处理

1)pojo

package com.by.pojo;



import java.io.Serializable;
import java.util.Date;

public class Account implements Serializable {
    private Integer id;
    private String name;
    private Float money;
    private Address address;
    private Date date;


    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", money=" + money +
                ", address=" + address +
                ", date=" + date +
                '}';
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Float getMoney() {
        return money;
    }

    public void setMoney(Float money) {
        this.money = money;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}
package com.by.pojo;

import java.io.Serializable;

public class Address implements Serializable {
    private String provinceName;
    private String cityName;
    


    @Override
    public String toString() {
        return "Address{" +
                "provinceName='" + provinceName + '\'' +
                ", cityName='" + cityName + '\'' +
                '}';
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
}

2)编写controller层

@Controller
@RequestMapping("/Account")
public class AccountController {
@RequestMapping("/controller16")
    @ResponseBody //pojo---》转JSON
    public Account controller16(@RequestBody Account account){//@RequestBody json--》转pojo
        System.out.println(account);
        return account;
    }
}

3)在index.jsp里面定义ajax请求

添加按钮

 <input type="button" value="测试ajax请求json和响应json" id="testJson"/>

引入js库文件

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

编写ajax代码

  <script type="text/javascript">
    $(function(){
      $("#testJson").click(function(){
        $.ajax({
          type:"post",
          url:"/Account/controller16",
          contentType:"application/json;charset=UTF-8",
          data:'{"id":1,"name":"张二狗","money":999.0}',
          success:function(data) {
                     }
        })
      });
    })
  </script>

结果:

3.2集合数据处理 

1)编写controller层

@RequestMapping("/controller17")
    @ResponseBody
    public Map controller17(@RequestBody Account account){
       Map<String, Object> map = new HashMap<>();
        try {
            //int a=6/0;
            map.put("status",200);
            map.put("msg",account);
        } catch (Exception e) {
            e.printStackTrace();
            map.put("status",500);
            map.put("msg","未知异常!!!!");
        }
        return map;
    }

2)编写ajax代码

<script type="text/javascript">
    $(function(){
      $("#testJson").click(function(){
        $.ajax({
          type:"post",
          url:"/Account/controller17",
          contentType:"application/json;charset=UTF-8",
          data:'{"id":1,"name":"张二狗","money":999.0}',
          success:function(data) {
            if (data.status == 200) {
              alert(data.msg.name);
              alert(data.msg.money);
            }else {
              alert(data.msg);
            }
          }
        })
      });
    })
  </script>

测试:

3.3对象数据处理

1)pojo

package com.by.pojo;

public class Result {
    private Integer status;
    private Object msg;

    @Override
    public String toString() {
        return "Result{" +
                "status=" + status +
                ", msg=" + msg +
                '}';
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Object getMsg() {
        return msg;
    }

    public void setMsg(Object msg) {
        this.msg = msg;
    }
}

2)编写controller层

 @RequestMapping("/controller18")
    @ResponseBody
    public Result controller18(@RequestBody Account account){
        Result result = new Result();
        try {
            //int a=6/0;
            result.setStatus(200);
            result.setMsg(account);
        } catch (Exception e) {
            e.printStackTrace();
            result.setStatus(500);
            result.setMsg("未知异常!!!!!");
        }
        return result;
    }

3)编写ajax代码

 <script type="text/javascript">
    $(function(){
      $("#testJson").click(function(){
        $.ajax({
          type:"post",
          url:"/Account/controller18",
          contentType:"application/json;charset=UTF-8",
          data:'{"id":1,"name":"张二狗","money":999.0}',
          success:function(data) {
            if (data.status == 200) {
              alert(data.msg.name);
              alert(data.msg.money);
            }else {
              alert(data.msg);
            }
          }
        })
      });
    })
  </script>

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/305433.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宝塔上的琉璃灯(for循环试炼)

8层宝塔上共有765盏琉璃灯&#xff0c;每层灯数都是上层的一倍&#xff0c;编程输出每层灯数。 (笔记模板由python脚本于2024年01月09日 16:41:22创建&#xff0c;本篇笔记适合熟悉循环编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python…

全新链动2+1模式,提升用户粘性度,增加产品复购率!

在互联网电商行业中&#xff0c;消费增值模式已经成为一种强大的营销工具。通过将消费者所消费的金额转化为积分&#xff0c;再利用平台的销售业绩作为托底&#xff0c;使得积分的价值不断增长&#xff0c;从而增加了消费者的忠诚度和黏性。然而&#xff0c;在实际操作中&#…

C++力扣题目-- 二叉树层序遍历

102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右…

1883_把FreeRTOS中的heap_4作为一个通用模块使用并初步测试

全部学习汇总&#xff1a; GreyZhang/c_units: A small piece of code which can be reuse anywhere, I call it a unit. This is a collection of unit in C language! Ok, yes, it would be my toolbox. (github.com) 在嵌入式&#xff0c;尤其是控制类的嵌入式中很少有mallo…

SUDA-计算机网路-期末复习提纲

写在前面 帮苏大的同学整理的计网复习材料&#xff0c;用的是他们老师划定的范围。 1.负责互联网协议开发、标准制定、地址分配的国际组织名称及其主要职责 (1) 地址支持组织&#xff08;ASO&#xff09;负责IP地址系统的管理。 (2) 域名支持组织&#xff08;DNSO&#xff09;…

CMU15-445-Spring-2023-Project #1 - 前置知识(lec01-06)

Lecture #01_ Relational Model & Relational Algebra Databases 数据库是相互关联的数据的有组织集合&#xff0c;对现实世界的某些方面进行建模。区别于DBMS&#xff08;MySQL、Oracle&#xff09;。 Flat File Strawman 数据库以CSV文件的形式存储&#xff0c;并由D…

非常漂亮的外贸网站完整代码,适合机械加工和金属零件等领域。

非常漂亮的外贸网站完整代码&#xff0c;适合机械加工和金属零件等领域。整站代码&#xff0c;上传到服务器虚拟主机即可使用。 独家原创资源。源码是asp开发的&#xff0c;数据库是access&#xff0c;主流的虚拟主机空间都支持asp&#xff0c;直接上传就可以使用。 站长保证…

PTA✨C语言 就不告诉你

7-7 就不告诉你 分数 15 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 做作业的时候&#xff0c;邻座的小盆友问你&#xff1a;“五乘以七等于多少&#xff1f;”你应该不失礼貌地围笑着告诉他&#xff1a;“五十三。”本题就要求你&#xff0c;对任何一对给定的正…

Spring MVC自定义类型转换器!!!

使用场景 在index.jsp里面添加日期类型 <form action"account/saveAccount" method"post">账户名称&#xff1a;<input type"text" name"name"><br/>账户金额&#xff1a;<input type"text" name&quo…

CTF-PWN-栈溢出-中级ROP-【栈迁移】

文章目录 栈迁移具体流程 VNCTF 2023 traveler libc-2.27检查源码main函数![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/386c35c30f854434ae43667b9473c58a.png)全局变量地址局部变量地址 PIE保护开启PIE关闭PIE 思路exp 栈迁移参考 栈迁移参考 栈迁移 顾名思义…

充分利用城市闲置空地,建造舒适的气膜运动馆

在城市土地紧张的背景下&#xff0c;气膜建筑以其轻盈灵动的特性&#xff0c;成为利用闲置空地的理想选择。建造舒适的气膜运动馆不仅提升了城市空间利用效率&#xff0c;更为全民健身搭建了一座充满活力的乐园&#xff0c;为城市生活注入了新的活力和福音。 解决城市土地紧张的…

将Llama2上下文长度扩展100倍;效率更高的SeTformer;LLM准确度基本不变加速1.56×;FreeTalker

本文首发于公众号&#xff1a;机器感知 将Llama2上下文长度扩展100倍&#xff1b;效率更高的SeTformer&#xff1b;LLM准确度基本不变加速1.56&#xff1b;FreeTalker Latte: Latent Diffusion Transformer for Video Generation 本文使用Latent Diffusion Transformer(Latte…

让开发改bug全靠催?分享6个实用技巧

测试小伙伴们&#xff0c;你们有遇到下图的情况吗&#xff1f; ​ 这张图其实还算“温柔”的&#xff0c;其实有些情况下&#xff0c;某些测试人员或者开发人员脾气大的可能撕逼或者快干架。所以如何和开发有效沟通&#xff0c;并高效劝说开发改掉bug是一门学问&#xff0c;以…

阿里云服务器e实例和云服务器u1实例有什么区别?

阿里云服务器u1和e实例有什么区别&#xff1f;ECS通用算力型u1实例是企业级独享型云服务器&#xff0c;ECS经济型e实例是共享型云服务器&#xff0c;所以相比较e实例&#xff0c;云服务器u1性能更好一些。e实例为共享型云服务器&#xff0c;共享型实例采用非绑定CPU调度模式&am…

【C++入门到精通】异常 | 异常的使用 | 自定义异常体系 [ C++入门 ]

阅读导航 引言一、C异常的概念二、异常的使用1. 异常的抛出和捕获&#xff08;1&#xff09;throw&#xff08;2&#xff09;try-catch&#xff08;3&#xff09;catch(. . .)&#xff08;4&#xff09;异常的抛出和匹配原则&#xff08;5&#xff09;在函数调用链中异常栈展开…

Java项目:112SSM在线电影订票系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 在线电影订票系统基于SpringSpringMVCMybatis开发&#xff0c;系统分为前台和后台&#xff0c;前台主要用来用户浏览电影信息&#xff0c;订票&#xff0c…

C/C++学习笔记 vcpkg使用备忘及简要说明

一、简述 vcpkg 是一个免费的 C/C 包管理器&#xff0c;用于获取和管理库。从 1500 多个开源库中进行选择&#xff0c;一步下载并构建&#xff0c;或者添加您自己的私有库以简化构建过程。由 Microsoft C 团队和开源贡献者维护。 官方教程 vcpkg 文档 | Microsoft Learnvcpkg …

day-04 字符串中的额外字符

思路 动态规划&#xff0c;每个字符要么额外要么不是额外 解题方法 int[] dp new int[n1]; dp[i] 表示从字符串开头到字符串索引i位置的最少额外字符数 dp[i 1] Math.min(dp[i 1], dp[j]) dp[j]表示假设s第i个字符不是额外的&#xff0c;可能等于dp[i 1]&#xff0c;也可…

GPS 模拟器

GPS 工具包&#xff1a;https://www.ni.com/es/support/downloads/software-products/download.gnss-test-toolkit.html#333303 GPS-SDR-SIM&#xff1a;https://github.com/osqzss/gps-sdr-sim GPS LabVIEW &#xff1a;http://mikioblog.dolphinsystem.jp/2017/08/gps-sdr-si…

Presto大数据学习网站:让你轻松驾驭大数据处理!

介绍&#xff1a;Presto是一个由Facebook开源的分布式SQL查询执行引擎&#xff0c;它被设计用于处理各种规模的数据并进行快速分析查询。这个引擎具有优秀的兼容性&#xff0c;可以支持众多的数据源&#xff0c;包括但不限于HDFS、关系型数据库管理系统&#xff08;RDBMS&#…