Solo  当前访客:1 开始使用


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

标签:
新一篇: Wrapper 包装模式/装饰器模式 旧一篇: OncePerRequestFilter 过滤器