• 通过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

  • 相关阅读:
    git diff的使用
    composer安装特别慢的解决方案
    laravel5.5 excel的安装和使用
    laravel中有条件使用where
    数据结构10——强连通
    数据结构9——桥
    数据结构8——割点
    数据结构7——费用流
    数据结构6——网络流
    数据结构5——二分图匹配
  • 原文地址:https://www.cnblogs.com/twodog/p/12135634.html
Copyright © 2020-2023  润新知