批量替换表前缀调整

master
RuoYi 5 years ago
parent c0cd030d0f
commit 109c64e7c2
  1. 15
      ruoyi/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
  2. 44
      ruoyi/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
  3. 2
      ruoyi/src/main/java/com/ruoyi/project/tool/gen/util/GenUtils.java

@ -9,8 +9,6 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.common.enums.HttpMethod;
/**
* Repeatable 过滤器
*
@ -28,16 +26,19 @@ public class RepeatableFilter implements Filter
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest req = (HttpServletRequest) request;
if (HttpMethod.PUT.name().equals(req.getMethod()) || HttpMethod.POST.name().equals(req.getMethod()))
ServletRequest requestWrapper = null;
if (request instanceof HttpServletRequest)
{
RepeatedlyRequestWrapper repeatedlyRequest = new RepeatedlyRequestWrapper((HttpServletRequest) request);
chain.doFilter(repeatedlyRequest, response);
requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response);
}
else
if (null == requestWrapper)
{
chain.doFilter(request, response);
}
else
{
chain.doFilter(requestWrapper, response);
}
}
@Override

@ -4,12 +4,12 @@ import java.io.BufferedReader;
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 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
{
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,50 +38,35 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
@Override
public ServletInputStream getInputStream() throws IOException
{
final ByteArrayInputStream bais = new ByteArrayInputStream(body);
return new ServletInputStream()
{
@Override
public boolean isFinished()
public int read() throws IOException
{
return false;
return bais.read();
}
@Override
public boolean isReady()
public boolean isFinished()
{
return false;
}
@Override
public void setReadListener(ReadListener listener)
public boolean isReady()
{
return false;
}
@Override
public int read() throws IOException
public void setReadListener(ReadListener readListener)
{
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;
}
}

@ -180,7 +180,7 @@ public class GenUtils
*/
public static String replaceFirst(String replacementm, String[] searchList)
{
String text = StringUtils.EMPTY;
String text = replacementm;
for (String searchString : searchList)
{
if (replacementm.startsWith(searchString))

Loading…
Cancel
Save