HttpServletRequest获取POST请求Body参数3种方法

  1. request.getInputStream()
         /**
         * If the parameter data was sent in the request body, such as occurs
         * with an HTTP POST request, then reading the body directly via
         * @see javax.servlet.ServletRequest#getInputStream or
         * @see javax.servlet.ServletRequest#getReader
         * @param request HttpServletRequest
         * @return String
         */
        public static String getPostData(HttpServletRequest request) {
            StringBuilder data = new StringBuilder();
            String line;
            BufferedReader reader;
            try {
                reader = request.getReader();
                while (null != (line = reader.readLine())) {
                    data.append(line);
                }
            } catch (IOException e) {
                return null;
            }
            return data.toString();
        }

    2、@RequestBody

        @RequestMapping(value = "hello", method = {RequestMethod.POST})
        @ResponseBody
        public String batchDisabledUsers(@RequestBody xxxDTO  xx) {
    
        }
    

    3、@RequestParam

    @RequestMapping(value = "/testurl", method = RequestMethod.POST)
    @ResponseBody
    public StringTestUrl(@RequestParam("username")String username,         
                     @RequestParam("pwd")String pwd)  {
      String txt = username + pwd;
      return txt;
    }

     

获取HttpServletRequest中的body,可以使用HttpServletRequestWrapper来封装request,并在过滤器中进行处理。首先,可以创建一个Filter来实现对HttpServletRequest的转换。在该Filter的doFilter方法中,可以判断是否为POST请求,如果是则使用BodyReaderHttpServletRequestWrapper来封装request。 引用中的代码示例展示了如何创建HttpServletRequestWrapperFilter,并在其中对request进行包装。 最后,在拦截器中可以通过判断request是否为BodyReaderHttpServletRequestWrapper的实例来获取request中的body数据。引用中的代码示例展示了如何在拦截器中获取request中的body数据。 此外,还可以使用流来读取request中的body数据。引用中的代码示例展示了一读取requestbody的方式。 综上所述,要获取HttpServletRequest中的body数据,可以使用HttpServletRequestWrapper来封装request,并在过滤器或拦截器中进行处理,或者使用流来读取request中的body数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [拦截器获取HttpServletRequestbody数据](https://blog.csdn.net/chuwangji7769/article/details/100906194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [从HttpServletRequest获取body](https://blog.csdn.net/qq_24850045/article/details/121927722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值