请求参数拦截打印处理2

wxpay
LI-CCONG\李聪聪 8 months ago
parent ba0840206b
commit 65dbc9fb32

@ -1,30 +1,44 @@
package cc.yunxi.filter;
import org.springframework.util.StreamUtils;
import cn.hutool.core.io.IoUtil;
import cn.hutool.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import javax.servlet.ReadListener;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.Part;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collection;
/**
* Request
* @RequestBodyRequest
*/
@Slf4j
public class RequestReaderHttpServletRequestWrapper extends HttpServletRequestWrapper {
private byte[] requestBody = null;
private byte[] requestBody;
public RequestReaderHttpServletRequestWrapper (HttpServletRequest request) {
private Collection<Part> requestParts;
public RequestReaderHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
//缓存请求body
//缓存请求body或parts
try {
requestBody = StreamUtils.copyToByteArray(request.getInputStream());
} catch (IOException e) {
e.printStackTrace();
if(ServletFileUpload.isMultipartContent(request)) {
requestParts = request.getParts();
} else { // application/x-www-form-urlencoded、json
requestBody = IoUtil.readBytes(request.getInputStream());
}
} catch (Exception e) {
log.error("requestWrapper error", e);
throw new RuntimeException(e);
}
}
@ -67,4 +81,12 @@ public class RequestReaderHttpServletRequestWrapper extends HttpServletRequestWr
public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(getInputStream()));
}
/**
* getParts()
*/
@Override
public Collection<Part> getParts() {
return requestParts;
}
}

@ -23,8 +23,7 @@ public class StatsInterceptor implements HandlerInterceptor {
public static final String METHOD_REQUEST_ELAPSED_TIME = "method_request_elapsed_time";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 获取封装后的request
request = new RequestReaderHttpServletRequestWrapper(request);
// 封装后的request
request.setAttribute(METHOD_REQUEST_ELAPSED_TIME, System.currentTimeMillis());
String requestURI = request.getRequestURI();
String method = request.getMethod();

Loading…
Cancel
Save