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

网友投稿 1756 2023-02-17


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.HttpSerhttp://vlet;

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的内容。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口测试代码怎么写(接口测试描述)
下一篇:2018年java技术面试题整理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~