在代码编写过程中,我们使用拦截器做通用的业务拦截处理。但通过request.getInputStream()获取了后,再到Controller层就获取不到流了。本文对此问题处理过程如下。
第一步:先创建自定义CustomRequestWrapper
import jodd.io.StreamUtil;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @Desc: 重写request,进行流的缓存
* @Author: YangYangen
* @Date: 2021/10/18
*/
public class CustomRequestWrapper extends HttpServletRequestWrapper {
/**
* 用于保存读取body中数据
*/
private byte[] body;
public CustomRequestWrapper(HttpServletRequest request) throws IOException {
super(request);
/**
* 读取请求的数据保存到本类当中
*/
body = StreamUtil.readBytes(request.getReader(), "UTF-8");
}
/**
* 覆盖&#x