zoukankan      html  css  js  c++  java
  • 通过HttpServletRequest转换获得json对象

    如何把前端传过来的Json对象解析出来?在java web应用中,我们如何获取post请求body中的内容?
    通常利用request获取参数可以直接通过req.getParameter(name)的方式获取url上面或者ajax data提交上来的参数。但是body是没有名字的,无法通过参数名字这种方式获取。这时候需要用到io流的方式来获取body中的内容。

    package com.example.controller;
     
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    import com.alibaba.fastjson.JSONObject;
     
    @RestController
    @EnableAutoConfiguration
    public class Example {
     
        @RequestMapping("/")
        String home() {
            return "Hello World!";
        }
        
        
        // 这里我没做异常处理
        @RequestMapping("/request")
        String request(HttpServletRequest request, HttpServletResponse response) {
            String param= null; 
            try {
                BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
                StringBuilder responseStrBuilder = new StringBuilder();
                String inputStr;
                while ((inputStr = streamReader.readLine()) != null)
                    responseStrBuilder.append(inputStr);
                
                JSONObject jsonObject = JSONObject.parseObject(responseStrBuilder.toString());
                param= jsonObject.toJSONString();
                System.out.println(param);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return param;
        }
        
        
        
        
     
        @RequestMapping("/hello/{myName}")
        String index(@PathVariable String myName) {
            return "Hello " + myName + "!!!";
        }
    }

    获取body参数,需要在request.getParameter()方法之前调用(如果有需要取QueryString参数的话),因为一旦调用了getParameter()方法之后,再通过IO流的方式获取body参数就失效了(亲测返回"")

    参考:

    1、http://blog.techbeta.me/2015/12/java-http-json/

    2、https://blog.csdn.net/qq_27292113/article/details/76837603

  • 相关阅读:
    Yii2 的 updateAll 方法参数详解
    Yii2 数据库查询汇总
    Git常见报错
    git rebase篇
    在 Yii 2.0 上,使用 updateAll() 更新表列值为同一表的另一列值的实现
    Git从其他分支merge个别文件
    Git cherry-pick 复制多个commit
    Git 删除某次提交(某个commit)的方法
    多进程记录
    python3安装Crypto过程
  • 原文地址:https://www.cnblogs.com/shengulong/p/9949891.html
Copyright © 2011-2022 走看看