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

  • 相关阅读:
    另一种逆元的求解方法
    SSHFS使用笔记
    HDU 2612 Find a way (BFS)
    POJ 3984 迷宫问题 (BFS + Stack)
    计蒜客 疑似病毒 (AC自动机 + 可达矩阵)
    HUD 1426 Sudoku Killer (DFS)
    计蒜客 成绩统计 (Hash表)
    计蒜客 劫富济贫 (Trie树)
    POJ 2251 Dungeon Master (BFS)
    [IB]Integration Broker 是如何处理传入的请求(Part 2)
  • 原文地址:https://www.cnblogs.com/twodog/p/12135635.html
Copyright © 2020-2023  润新知