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

时间:2025-04-02 13:29:57

     在java web应用中,我们如何获取post请求body中的内容?以及需要注意的问题。
    通常利用request获取参数可以直接通过(name)的方式获取url上面或者ajax data提交上来的参数。但是body是没有名字的,无法通过参数名字这种方式获取。这时候需要用到io流的方式来获取body中的内容。
    这里先贴出一段代码:

package ;
import ;
import ;
import ;

import ;
import ;
import ;
import ;

import ;
import .;

import ;
import ;
import ;
public class BusinessServlet extends HttpServlet{
	public static final Logger log = ();
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static BusinessService service;
	static{
		service = (BusinessService) ("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(()));
		String body = (reader);
		String name = ("name");
		if((body)){
			("business receive somthing with body :"+body);
		}
		("UTF-8");
		("application/json");
		(HttpServletResponse.SC_OK);
		().println((name));
	}
	
}
     在这段代码doPost方法中,用到了IO流来获取post提交的body,这样我们就获取了客户端提交的参数。

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

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