为了账号安全,请及时绑定邮箱和手机立即绑定

捕获并记录响应正文

捕获并记录响应正文

慕慕森 2019-09-24 16:48:44
我有一个处理某些HTTP请求和响应的servlet。我想先记录响应正文,然后再发送回客户端。在将响应主体作为HttpServletResponse对象从Servlet 发送之前,有什么方法可以捕获它?
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

BalusC的替代答案 使用TeeOutputStream一次写入两个输出流。


public void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    final PrintStream ps = new PrintStream(baos);


    chain.doFilter(req,new HttpServletResponseWrapper(res) {

         @Override

         public ServletOutputStream getOutputStream() throws IOException {

            return new DelegatingServletOutputStream(new TeeOutputStream(super.getOutputStream(), ps)

            );

         }

         @Override

         public  PrintWriter getWriter() throws IOException {

            return new PrintWriter(new DelegatingServletOutputStream (new TeeOutputStream(super.getOutputStream(), ps))

            );

         }

      });


    //Get Response body calling baos.toString();

}


查看完整回答
反对 回复 2019-09-24
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

也许Servlet过滤器可以为您提供帮助。可以将其视为HTTP的面向方面的编程。


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 404 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信