From 109c64e7c20e044ee3fa650f0d0599aeb64633e8 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 13 三月 2020 22:14:58 +0800 Subject: [PATCH] 批量替换表前缀调整 --- ruoyi/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java | 44 ++++++++++++++++---------------------------- 1 files changed, 16 insertions(+), 28 deletions(-) diff --git a/ruoyi/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java b/ruoyi/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java index f059d37..bd7097f 100644 --- a/ruoyi/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java +++ b/ruoyi/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java @@ -4,12 +4,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; -import java.nio.charset.Charset; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.http.HttpHelper; /** * 构建可重复读取inputStream的request @@ -20,10 +20,13 @@ { private final byte[] body; - public RepeatedlyRequestWrapper(HttpServletRequest request) throws IOException + public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException { super(request); - body = readBytes(request.getReader(), "utf-8"); + request.setCharacterEncoding("UTF-8"); + response.setCharacterEncoding("UTF-8"); + + body = HttpHelper.getBodyString(request).getBytes("UTF-8"); } @Override @@ -35,9 +38,17 @@ @Override public ServletInputStream getInputStream() throws IOException { + final ByteArrayInputStream bais = new ByteArrayInputStream(body); + return new ServletInputStream() { + + @Override + public int read() throws IOException + { + return bais.read(); + } @Override public boolean isFinished() @@ -52,33 +63,10 @@ } @Override - public void setReadListener(ReadListener listener) + public void setReadListener(ReadListener readListener) { - } - - @Override - public int read() throws IOException - { - return bais.read(); } }; - } - - /** - * 通过BufferedReader和字符编码集转换成byte数组 - */ - private byte[] readBytes(BufferedReader br, String encoding) throws IOException - { - String str = null, retStr = ""; - while ((str = br.readLine()) != null) - { - retStr += str; - } - if (StringUtils.isNotBlank(retStr)) - { - return retStr.getBytes(Charset.forName(encoding)); - } - return null; } } -- Gitblit v1.9.2