如何接收前端传来的json数据

我是小康小白,一个平平无奇的Java小白。热爱有趣的文字,生活和远方。

在这里插入图片描述

从前端获取json格式包的数据,而不是仅仅通过参数来获得

1.第一种使用使用IOUtils的读取包方式

在这里插入图片描述
但这种方法需要jar包
阿里巴巴的dubbo jar包,下载路径如下
https://www.jianguoyun.com/p/DVhqYcEQzsO1CBjDp5cD (访问密码 : lnui2s)

import com.alibaba.dubbo.common.utils.IOUtils;、

2.使用使用InputStreamReader对象,获取前端传来的数据字节流然后转化为字符进行操作

在这里插入图片描述
这种方法不需要jar包,而且可以设置传入数据的编码方式。

补充

如何使用postman进行对上面的方法进行测试

在向postman中传递参数为Json数据结构有四种方式,比较实用的是通过form-data和通过body中的raw来传递
方法二: body中的raw
(推荐使用这种,可以上传任意格式的文本,可以上传text、json、xml、html等)

1,postman测试的时候,先写你的请求头

一共有四种格式:
咱们用第三种

在这里插入图片描述
详细介绍:
在这里插入图片描述
在这里插入图片描述

2,向body中添加json格式的数据

在这里插入图片描述

3.运行idea,然后send,然后就可以或得数据了

在这里插入图片描述

Servlet的代码

Servlet源码:

package YunNotes.servlet;

import YunNotes.users_publicnotes.entity.User;
import YunNotes.util.json.JsonChange;
import com.alibaba.dubbo.common.utils.IOUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 响应参数格式设置
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");


        //将此字符串对象输出
        PrintWriter out=response.getWriter();

        //使用IOUtils的读取包方式
//        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
//        String body = IOUtils.read(reader);

        //使用InputStreamReader对象,获取前端传来的数据.其中
        // request.getInputStream()是读取前端传递来的数据字节流,
        // StandardCharsets.UTF_8是将前端传来的数据转化为UTF-8的编码方式
        InputStreamReader insr = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8);
        StringBuilder body = new StringBuilder();
        int respInt = insr.read();
        while(respInt!=-1) { // 读取请求数据
            //将读取的字节流中的每一个字节转化为字符,然后添加到StringBuilder类型的对象中
            body.append((char) respInt);
            respInt = insr.read();
        }


        //out的print方法可以输出对象
        out.print(body);
        JsonChange jsonChange = new JsonChange();
        //将StringBuilder类型的对象的对象通过toString方法转化为String类型,然后用fastjson的json包进行转化
        User user = jsonChange.JsonChangeJavaObject(body.toString());

        out.write(user.toString());
//        out.write(body);

    }

如果想对数据进行进一步的操作,可以看看我的另一篇博文

Java如何处理前端传来的json格式的数据并将它转化为相应的对象,然后进行使用

猜你喜欢

转载自blog.csdn.net/weixin_45791445/article/details/106042885
今日推荐