java通過HttpServletRequest獲取post請求中的body內(nèi)容的方法

在java web應(yīng)用中,我們?nèi)绾潍@取post請求body中的內(nèi)容?以及需要注意的問題。

創(chuàng)新互聯(lián)公司服務(wù)項目包括迎江網(wǎng)站建設(shè)、迎江網(wǎng)站制作、迎江網(wǎng)頁制作以及迎江網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,迎江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到迎江省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

通常利用request獲取參數(shù)可以直接通過req.getParameter(name)的方式獲取url上面或者ajax data提交上來的參數(shù)。但是body是沒有名字的,無法通過參數(shù)名字這種方式獲取。這時候需要用到io流的方式來獲取body中的內(nèi)容。

這里先貼出一段代碼:

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,這樣我們就獲取了客戶端提交的參數(shù)。

需要注意的是:獲取body參數(shù),需要在request.getParameter()方法之前調(diào)用(如果有需要取QueryString參數(shù)的話),因為一旦調(diào)用了getParameter()方法之后,再通過IO流的方式獲取body參數(shù)就失效了(親測返回"")。

另外,這里使用了dubbo-2.5.3.jar的IOUtils.read(reader)方法來讀取post body的內(nèi)容。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享標(biāo)題:java通過HttpServletRequest獲取post請求中的body內(nèi)容的方法
新聞來源:http://muchs.cn/article42/jpgohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、App設(shè)計小程序開發(fā)、外貿(mào)建站做網(wǎng)站、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司