パッケージcom.lb.demo.listener。 輸入java.io.BufferedReader; 輸入java.io.ByteArrayInputStream。 インポートにjava.io.IOException; 輸入java.io.InputStreamReader。 輸入javax.servlet.ReadListener。 輸入javax.servlet.ServletInputStream。 インポートのjavax.servlet.http.HttpServletRequest; 輸入javax.servlet.http.HttpServletRequestWrapper。 /××××
×
×
×
×添加此类
×
×
×
×××××××/ パブリック クラスBodyReaderHttpServletRequestWrapperはHttpServletRequestWrapperクラス{延び プライベート最終バイト []本体と、// 用于保存读取体の中の数据の 公共BodyReaderHttpServletRequestWrapper(HttpServletRequestのリクエストは)のIOException {スロー スーパー(要求)。 StringBufferのSB = 新しいStringBufferを(); 文字列のTEMP = nullを。 BufferedReaderのbufferread = request.getReader()。 一方、((TEMP = bufferread.readLine())!= NULL ){ sb.append(TEMP)。 } 本体 = sb.toString()GetBytesメソッド()。 bufferread.close(); } @Override 公共BufferedReaderのgetReaderは()のIOException {スロー リターン 新しいをBufferedReader(新しいInputStreamReaderの(のgetInputStream())); } @Override 公共サーブレット入力のgetInputStream()のIOException {スロー 最終れるByteArrayInputStream BAIS = 新しいするByteArrayInputStream(本体) 返す 新しいサーブレット入力を(){ @Override 公共 int型の読み取り()はIOException {スロー リターン)(bais.readを。 } @Override 公共isFinishedブール(){ // TODO自動生成方法のスタブを 返す 偽; } @Override パブリックブールisReady(){ // TODO自動生成方法スタブ リターン 偽。 } @Override 公共 ボイドsetReadListener(ReadListener arg0に){ // TODO自動生成方法スタブ } }。 } }
パッケージcom.lb.demo.listener。 輸入java.io.BufferedReader; インポートにjava.io.IOException; 輸入れるjavax.servlet.FilterChain。 輸入javax.servlet.ServletException; 輸入javax.servlet.ServletRequest; インポートのjavax.servlet.ServletResponse。 輸入javax.servlet.http.HttpFilter。 インポートのjavax.servlet.http.HttpServletRequest; 輸入org.apache.commons.logging.Log; 輸入org.apache.commons.logging.LogFactory; 輸入org.springframework.stereotype.Component。 /××××
×
×
×
×修改フィルタ
×
×
××××××××××/
@Component パブリック クラスMyServletFilterはHttpFilter延び{ 文字列のparam = "" ; プライベートログログ= LogFactory.getLog(MyServletFilter。クラス); 公共 ボイド(破壊){ // TODO自動生成方法スタブ } @Override 公共 ボイドのdoFilter(のServletRequest要求は、ServletResponseを応答は、鎖れるFilterChain)は IOExceptionがスロー、ServletExceptionが{ のServletRequest requestWrapper = NULL ; requestWrapper = 新しい BodyReaderHttpServletRequestWrapper((HttpServletRequestの)要求)。// 替换 PARAM = この.getBodyString(requestWrapper.getReader())。 log.info(" フィルタ读取体中的参数>>>>>>>>> " + PARAM)。 chain.doFilter(requestWrapper、応答)。 } パブリック 静的文字列getBodyString(BufferedReaderののBR){ 文字列inputLine。 文字列str = "" ; してみてください{ しばらく((inputLine = br.readLine())!= nullの){ STR + = inputLine。 } br.close()。(例外:IOException e)の{ システム。アウト .println(" IOExceptionが:" + e)前記 } 戻りSTR。 } }