ContentCachingRequestWrapper个人理解,如有理解错误的地方,欢迎指正
参考这篇博客
https://blog.csdn.net/f641385712/article/details/87814153
背景:request.getInputStream()获取
请求body里面的内容只能被获取一次,ContentCachingRequestWrapper通过这个类能够解决解决HttpServletRequest inputStream只能读取一次的问题,但是这个类有缺陷(前提必须是doFilter之前不能使用request.getInputStream()方法
)
分析:
cachedContent来缓存body体里面的内容。但最重要的是,什么时候才会向cachedCotent里面写内容呢?
1.程序在运行过程中会调用ContentCachingRequestWrapper的getInputStream()方法
public ServletInputStream getInputStream() throws IOException {
if (this.inputStream == null) {
this.inputStream = new ContentCachingRequestWrapper.ContentCachingInputStream(this.getRequest().getInputStream());
}
return this.inputStream;