捕获并记录响应正文

我有一个处理某些HTTP请求和响应的servlet。我想先记录响应正文,然后再发送回客户端。在将响应主体作为HttpServletResponse对象从Servlet 发送之前,有什么方法可以捕获它?



慕慕森
浏览 421回答 3
3回答

小唯快跑啊

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();}

蝴蝶不菲

也许Servlet过滤器可以为您提供帮助。可以将其视为HTTP的面向方面的编程。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java