Java Webアプリケーションでは、POSTリクエスト本体のコンテンツをどのように取得しますか?注意が必要な問題。
通常、リクエストを使用してパラメーターを取得すると、Req.getParameter(名前)を介してURLまたはAJAXデータによって送信されたパラメーターを直接取得できます。ただし、本文には名前がなく、パラメーター名で取得することはできません。現時点では、IOストリームを使用してボディ内のコンテンツを取得する必要があります。
これがコードです:
package com.lenovo.servlet;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import javax.servlet.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.aliba.dubbo.common.utils.ioutils; import com.lenovo.service.service.sungysservice; com.lenovo.utils.webContext; public class businessServlet拡張httpservlet {public static final logger log = logger.getLogger(BusinessServlet.Class); / ** * */ private static final long serialversionuid = 1l;プライベートStatic BusinessServiceサービス。 static {service =(businessservice)webcontext.getBean( "BusinessService"); } @Override Protected void doget(httpservletrequest req、httpservletresponse rep)servletexception、ioexception {dopost(req、rep); } @Override Protected void dopost(httpservletrequest req、httpservletresponse res)throws servletexception、ioexception {bufferedreader reader = new bufferedreader(new inputStreamReader(req.getInputStream()); string body = ioutils.read(reader);文字列名= req.getParameter( "name"); if(stringutils.isnotblank(body)){log.info( "ビジネスがボディで何かを受け取る:"+body); } res.setcharacterencoding( "utf-8"); Res.SetContentType( "Application/JSON"); res.setstatus(httpservletresponse.sc_ok); res.getWriter()。println(service.getName(name)); }}このコードDoPostメソッドでは、IOストリームが投稿された投稿ボディを取得するために使用されるため、クライアントが提出したパラメーターを取得します。
getParameter()メソッドが呼び出されると、request.getParameter()メソッド(クエリストリングパラメーターを取得する必要がある場合)の前に、ボディパラメーターを取得するには、request.getParameter()メソッドを呼び出す必要があります。
さらに、Dubbo-2.5.3.3のioutils.read(Reader)メソッドは、ここではポストボディの内容を読み取るために使用されます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。