编写Servlet代码获取页面body中json数据
创始人
2024-04-13 20:48:43
0

目录

1、在 maven 项目中引入 jackson

2、编写代码

 ① 介绍 jackson 提供操作 json 数据的类和方法

 ② 确定 json 数据格式,并写出对应的类

 ③ 编写servlet代码

3、使用 postman 发送数据观察结果

4、拓展 readValue 方法返回构造对象的过程


 本文使用maven项目,并使用 idea 中的 smart Tomcat 插件,smart Tomcat 配置如下:

 没接触servlet的同学可以参考:用Servlet编写hello world+使用smart Tomcat插件部署

1、在 maven 项目中引入 jackson

Servlet 没有内置 json解析,为了方便我们可以引入第三方json库:jackson

maven 官方地址:https://mvnrepository.com/

在maven官网搜索 jackson,点击第一个搜索结果 Jackson Databind

进入之后随便挑一个版本,这里我选的是 2.13.4.1 

 复制 Maven 内的代码


com.fasterxml.jackson.corejackson-databind2.13.4.1

 添加到 pom.xml 的 dependencies 标签中

 注意:

  1. 如果没有 dependencies 标签,那就需要自己手写一个
  2. 如果代码报红,可以点击右上的刷新按钮

​​

2、编写代码

 ① 介绍 jackson 提供操作 json 数据的类和方法

 jackson  提供了一个核心类共我们读取和操作json数据,该类为 ObjectMapper

对于该类,我们主要掌握两个方法即可,如下

 1. readValue 方法

  • 作用:把 json 格式的数据转成 java 对象 
  • 传参
    • 第一个参数:可以是字符串,也可以是字符流
    • 第二个参数:是一个类对象(就是要解析出来的结果的对象的类)   

 2. writeValueAsString 方法

  • 作用:把 java 对象转成 json 格式的字符串

 ② 确定 json 数据格式,并写出对应的类

此处假设请求的 body 格式为  { Id: 10, name: "张三" }

然后,根据属性创建一个 Person 类(目的:方便我们接收数据)

class Person{public int Id;public String Name;
}

注意:

  1. 这个类里的属性务必使 public 或者带有 public 的 getter / setter 方法,否则 jackson 无法访问这个对象的属性
  2. 这个类务必要有无参版本的构造方法!!!            

 ③ 编写servlet代码

编写一个类 JsonServlet 并继承 HttpServlet,同时实现 doGet 方法并在该方法中实现接收json数据等操作

@WebServlet("/json") :设置该类的 Servlet Path为 /json

总代码如下 

class Person{//1.这个类里的属性务必使 public 或者带有 public 的 getter / setter// 否则 jackson 无法访问这个对象的属性//2.这个类务必要有无参版本的构造方法!!!public int Id;public String Name;
}@WebServlet("/json")
public class JsonServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 此处假设请求的 body 格式为//  { Id: 10, name: "张三" }ObjectMapper objectMapper = new ObjectMapper();Person p = objectMapper.readValue(req.getInputStream(),Person.class);System.out.println(p.Id);System.out.println(p.Name);//设置字符集resp.setContentType("text/html; charset=utf8");resp.getWriter().write(p.Id +", "+ p.Name);}
}

3、使用 postman 发送数据观察结果

首先,运行该代码,然后打开 postman,点击 +

 在 GET 后输入地址:http://127.0.0.1:8080/servlet/json

 返回选择下面 Body -> raw -> JSON,并在下发输入要发送的 json 数据

 注意:在 postman 中写 json 格式的时候,务必要保证这里的key 是带引号的!!!

点击 Send,就能在下发看见发送结果了

 

 同时,在Idea 中也有打印

 到此,json 数据就发送并接收成功!!

4、拓展 readValue 方法返回构造对象的过程

1. 读取输入流,获取到要解析的字符串。

2. 把字符串按照 json 格式解析,得到一组键值对(Map)。

3. 根据类对象,创建一个实例。

4. 遍历类对象中的属性的名字,拿着名字去上述 Map 中查询,查到的 value 赋值到对应的对象的属性中。

5. 返回这个构造完成的对象。

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...