当前位置: 首页 > 面试题库 >

如何读取HttpServletReponses输出流?

康文昌
2023-03-14
问题内容

我想制作一个Servlet过滤器,该过滤器将在处理和完成响应后读取响应的内容,并以XML或PDF或其他方式返回该信息。但是我不确定如何从HttpServletResponse对象中获取任何信息。我如何获得此信息?


问题答案:

将此添加到过滤器java文件。

static class MyHttpServletResponseWrapper 
  extends HttpServletResponseWrapper {

  private StringWriter sw = new StringWriter(BUFFER_SIZE);

  public MyHttpServletResponseWrapper(HttpServletResponse response) {
    super(response);
  }

  public PrintWriter getWriter() throws IOException {
    return new PrintWriter(sw);
  }

  public ServletOutputStream getOutputStream() throws IOException {
    throw new UnsupportedOperationException();
  }

  public String toString() {
    return sw.toString();
  }
}

使用以下代码:

HttpServletResponse httpResponse = (HttpServletResponse) response;
MyHttpServletResponseWrapper wrapper = 
  new MyHttpServletResponseWrapper(httpResponse);

chain.doFilter(request, wrapper);

String content = wrapper.toString();

现在,content变量具有输出流。您也可以对二进制内容执行此操作。



 类似资料:
  • 问题内容: 我有一个Java应用程序,该应用程序存在一些性能问题,有人建议我以verbose:gc模式运行它。这已经完成,但是我不知道如何解释日志记录。是否可以向我解释这一切的含义,或者为我提供提高性能的建议? 可以在以下位置找到输出日志:http : //pastebin.com/uDNPEGcd 在此先感谢您,马尔滕 问题答案: 在每个gc集合之后立即打印,并打印有关每个世代内存详细信息的详细

  • 问题内容: 我有以下代码: 试图从阅读器中读取内容已挂起。我该如何解决?我该如何寻找正在发生的事情? 问题答案: 在等待命令完成的同时,必须连续读取输出。否则,如果命令产生足够的输出以填充输出缓冲区,则该命令将挂起,等待缓冲区被消耗,这将永远不会发生。这样您就陷入僵局。 以下示例在监视命令状态的同时连续读取stdout和stderr。它基于官方的JSch 示例 (仅添加了stderr的阅读)。 如

  • 所以,以下是问题: > 挂起的警报批次:23 a.“23”是当前活动的、预定的警报吗? +47S271MS正在运行,0次唤醒,2次警报:com.username.weatherinfo  · act=com.username.receivers.cyclicweatherupdater.weather_update_action  · · CMP={com.username.weatherinfo

  • 问题内容: 我正在Ubuntu 11.4上的一个终端上运行它。 假设我执行一个bash脚本,输出为: 在同一个bash脚本中,如何将上述输出存储为一个或多个变量? 理想的解决方案是准备好在以下条件中使用:(输出的第一行将存储在等中) 问题答案: 所以你要 请参见Bash手册中的“此处字符串” 。 或流程替代

  • 问题内容: 我一直在寻找如何读取jpeg图像然后显示图像的示例。 尝试了以下代码,但我认为编码需要设置为缓冲区。使用console.log它输出数据的“对象”。 问题答案: 这是您读取整个文件内容的方法,如果成功完成,则启动一个Web服务器,该Web服务器响应每个请求显示JPG图像: 请注意,服务器由“ readFile”回调函数启动,并且响应标头具有。 [编辑] 您甚至可以将image 与数据U

  • 我设置闹钟的主要代码 这是广播接收器