Servlet练习—获取页面body中json数据

简介: Servlet练习—获取页面body中json数据

本文使用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 内的代码

d97838942a0dddccda8a8f0af9bddd5e_9e8621a1356a4b2a8a4f15ac2450b123.png

复制 Maven 内的代码

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.4.1</version>
</dependency>

注意:

  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 {
    @Override
    protected 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. 返回这个构造完成的对象。


相关文章
|
2月前
|
JSON API 数据格式
淘宝/天猫图片搜索API接口,json返回数据。
淘宝/天猫平台虽未开放直接的图片搜索API,但可通过阿里妈妈淘宝联盟或天猫开放平台接口实现类似功能。本文提供基于淘宝联盟的图片关联商品搜索Curl示例及JSON响应说明,适用于已获权限的开发者。如需更高精度搜索,可选用阿里云视觉智能API。
|
2月前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。
|
1月前
|
机器学习/深度学习 JSON 监控
淘宝拍立淘按图搜索与商品详情API的JSON数据返回详解
通过调用taobao.item.get接口,获取商品标题、价格、销量、SKU、图片、属性、促销信息等全量数据。
|
1月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
1月前
|
JSON API 数据格式
干货满满!淘宝商品详情数据,淘宝API(json数据返回)
淘宝商品详情 API 接口(如 taobao.item.get)的 JSON 数据返回示例如下
|
2月前
|
JSON 算法 安全
淘宝商品详情API接口系列,json数据返回
淘宝开放平台提供了多种API接口用于获取商品详情信息,主要通过 淘宝开放平台(Taobao Open Platform, TOP) 的 taobao.tbk.item.info.get(淘宝客商品详情)或 taobao.item.get(标准商品API)等接口实现。以下是关键信息及JSON返回示例:
|
11天前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
92 3
|
11天前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
189 3
|
12天前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南

热门文章

最新文章