zoukankan      html  css  js  c++  java
  • struts2 接口如何接收客户端提交的json数据

    1.情景还原

      使用struts2写的接口(服务端),要求对方(客户端)以json格式传输数据,但是使用request.getParameter()获取不到

    2.问题剖析

      application/x- www-form-urlencoded是Post请求默认的请求体内容类型,也是form表单默认的类型,可以使用request.getParameter()方法来获取请求参数值;

      但是,当请求内容不是该类型时,就不能使用request.getParameter()方法来获取请求参数值了,具体如下:

      当请求体内容为application/json类型时,需使用request.getReader()方法来获取请求内容值(字符流),经测试也可以使用字节流来获取;

      当请求体内容为multipart/form-data类型时,需使用request.getInputStream()方法来获取请求内容值(字节流)。

    3.解决方案

      所需jar包

      struts2-core-2.3.34.jar;

      导入

    import java.io.BufferedReader;
    import java.io.IOException;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts2.ServletActionContext;
    /**
     * 获取接口传递的JSON数据
     * @explain
     * @param request HttpServletRequest对象
     * @return JSON格式数据
     */
    public static JSONObject getJsonReqData () {
        // 获取Request对象
        HttpServletRequest request = ServletActionContext.getRequest();
        StringBuffer sb = new StringBuffer();
        try {
            // json格式字符串
            String jsonStr = "";
            // 获取application/json格式数据,返回字符流
            BufferedReader reader = request.getReader();
            // 对字符流进行解析
            while ((jsonStr = reader.readLine()) != null) {
                sb.append(jsonStr);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 将json字符串(jsonStr)-->json对象(JSONObject)
        JSONObject jo = JSONObject.fromObject(sb.toString());
        return jo;
    }
  • 相关阅读:
    利用matlab给图像加高斯噪声
    频谱分析代码片段2
    相关性分析代码片段2
    相关性分析代码片段
    频谱分析代码片段
    大脑提取每一个体素26领域的matlab代码
    当前所看论文记录
    论文阅读笔记
    余弦距离、欧氏距离和杰卡德相似性度量的对比分析 by ChaoSimple
    Container With Most Water
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/9204376.html
Copyright © 2011-2022 走看看