java通过HttpServletRequest获取post请求中的body内容的方法

 更新时间:2018年02月11日 10:56:27   作者:luffy5459  
本篇文章主要介绍了java通过HttpServletRequest获取post请求中的body内容的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在java web应用中,我们如何获取post请求body中的内容?以及需要注意的问题。

通常利用request获取参数可以直接通过req.getParameter(name)的方式获取url上面或者ajax data提交上来的参数。但是body是没有名字的,无法通过参数名字这种方式获取。这时候需要用到io流的方式来获取body中的内容。

这里先贴出一段代码:

package com.lenovo.servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import com.alibaba.dubbo.common.utils.IOUtils;
import com.lenovo.service.BusinessService;
import com.lenovo.utils.WebContext;
public class BusinessServlet extends HttpServlet{
 public static final Logger log = Logger.getLogger(BusinessServlet.class);
 
 /**
 * 
 */
 private static final long serialVersionUID = 1L;
 private static BusinessService service;
 static{
 service = (BusinessService) WebContext.getBean("businessService"); 
 }
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 doPost(req, resp);
 }
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException {
 
 BufferedReader reader = new BufferedReader(new InputStreamReader(req.getInputStream()));
 String body = IOUtils.read(reader);
 String name = req.getParameter("name");
 if(StringUtils.isNotBlank(body)){
  log.info("business receive somthing with body :"+body);
 }
 res.setCharacterEncoding("UTF-8");
 res.setContentType("application/json");
 res.setStatus(HttpServletResponse.SC_OK);
 res.getWriter().println(service.getName(name));
 }
 
}

在这段代码doPost方法中,用到了IO流来获取post提交的body,这样我们就获取了客户端提交的参数。

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

另外,这里使用了dubbo-2.5.3.jar的IOUtils.read(reader)方法来读取post body的内容。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于Java实现计数排序,桶排序和基数排序

    基于Java实现计数排序,桶排序和基数排序

    这篇文章主要为大家详细介绍了计数排序,桶排序和基数排序的多种语言的实现(JavaScript、Python、Go语言、Java),感兴趣的小伙伴可以了解一下
    2022-12-12
  • Java实现WebSocket四个步骤

    Java实现WebSocket四个步骤

    这篇文章主要为大家介绍了Java实现WebSocket的方法实例,只需要简单四个步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • SpringBoot自定义路由覆盖实现流程详解

    SpringBoot自定义路由覆盖实现流程详解

    这篇文章主要介绍了SpringBoot自定义路由覆盖实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • Spring实战之获得Bean本身的id操作示例

    Spring实战之获得Bean本身的id操作示例

    这篇文章主要介绍了Spring实战之获得Bean本身的id操作,结合实例形式分析了spring获取Bean本身id的相关配置与实现技巧,需要的朋友可以参考下
    2019-11-11
  • 分布式消息队列RocketMQ概念详解

    分布式消息队列RocketMQ概念详解

    RocketMQ 是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ 的特点是纯JAVA实现,是一套提供了消息生产,存储,消费全过程API的软件系统,本文详细介绍了分布式消息队列RocketMQ概念,需要的朋友可以参考下
    2023-05-05
  • 聊聊SpringMVC项目依赖和静态资源导出问题

    聊聊SpringMVC项目依赖和静态资源导出问题

    这篇文章主要介绍了SpringMVC项目依赖和静态资源导出问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 详解kafka中的消息分区分配算法

    详解kafka中的消息分区分配算法

    kafka有分区机制,一个主题topic在创建的时候,会设置分区。如果只有一个分区,那所有的消费者都订阅的是这一个分区消息;如果有多个分区的话,那消费者之间又是如何分配的呢?本文就来为大家详细讲解一下
    2022-04-04
  • Java实现统计文档中关键字出现的次数

    Java实现统计文档中关键字出现的次数

    这篇文章主要为大家分享了利用Java语言实现统计关键字在文档中出现的次数的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-05-05
  • Spring Boot如何优化内嵌的Tomcat示例详解

    Spring Boot如何优化内嵌的Tomcat示例详解

    spring boot默认web程序启用tomcat内嵌容器,监听8080端口,下面这篇文章主要给大家介绍了关于Spring Boot如何优化内嵌Tomcat的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 详解java中面向对象设计模式类与类的关系

    详解java中面向对象设计模式类与类的关系

    这篇文章主要介绍了java面向对象设计模式中类与类之间的关系,下面小编和大家一起来学习一下吧
    2019-05-05

最新评论