Servlet 重复读取 HttpServletRequest 中的请求体
思路1:重复读取 HttpServletRequest 中的请求体
ContentCachingRequestWrapper 包装类,spring提供的HttpServletRequest包装类
思路2:缓存请求体 自定义一个 HttpServletRequest包装类,缓存请求体(不会!!!)
思路3:拦截器之前读取请求体,并缓存到请求属性中,之后读取即可
思路4:切面读取
用法
自定义过滤器,用装饰器模式
继承 ContentCachingRequestWrapper 类
ContentCachingRequestWrapper cachedRequest = new ContentCachingRequestWrapper(request); filterChain.doFilter(cachedRequest, response);
注册过滤器,匹配 url
在拦截器中调用
if(request instanceof ContentCachingRequestWrapper){
StringBuffer sb =new StringBuffer();
String line;
try (BufferedReader reader = request.getReader()) {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
}catch(Exception e){
}
}
标题:Servlet 重复读取 HttpServletRequest 中的请求体
作者:temp12138
地址:https://solo.mfyzl.icu/articles/2024/03/13/1710341901030.html
废话短说