54 Star 366 Fork 98

yl-yue / yue-library

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
RepeatedlyReadServletRequestFilter.java 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
package ai.yue.library.web.config.argument.resolver;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;
import ai.yue.library.base.constant.Constant;
import lombok.extern.slf4j.Slf4j;
/**
* RepeatedlyReadServletRequestWrapper过滤器
* <p>传递输入流可反复读取的HttpServletRequest
* <p>OncePerRequestFilter是在一次外部请求中只过滤一次。对于服务器内部之间的forward等请求,不会再次执行过滤方法。
*
* @author ylyue
* @since 2020年9月3日
*/
@Slf4j
public class RepeatedlyReadServletRequestFilter extends OncePerRequestFilter {
private static final String PARAM_TRANSMIT = Constant.PREFIX + "Param-Transmit";
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
log.debug("传递输入流可反复读取的HttpServletRequest ...");
/*
* 在request被包装之前,先进行一次参数解析处理,避免后续出现使用未包装的request导致:FileUploadException: Stream closed.
* 如:调用 request#getParts() 将使用已解析过的结果(parse multipart content and store the parts).
*/
request.getParameter(PARAM_TRANSMIT);
ServletRequest requestWrapper = new RepeatedlyReadServletRequestWrapper(request);
filterChain.doFilter(requestWrapper, response);
}
}
Java
1
https://gitee.com/yl-yue/yue-library.git
git@gitee.com:yl-yue/yue-library.git
yl-yue
yue-library
yue-library
master

搜索帮助