getWriter() has already been called for this response 的解决办法

2023-10-20 12:23:26 浏览数 (3)

问题

在使用springboot时,发现有个同事报了一个错:

getWriter() has already been called for this response 错误提示也比较明显,是被调用过了。

出错的部分代码如下:

代码语言:javascript复制
try {
  //有问题的部份
  //PrintWriter out = null;
  //out = response.getWriter();
  //String json = new ObjectMapper().writeValueAsString(map);
  //out.write(json);
  //out.flush();
  //out.close();
  
  outputStream = response.getOutputStream();
  String json = new ObjectMapper().writeValueAsString(map);
  outputStream.write(json.getBytes());
  outputStream.flush();
  outputStream.close();
} catch (IOException e) {
  LOGGER.error(e.getMessage(), e);
} finally {
  if (outputStream != null) {
    try {
      outputStream.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

注释部份为有问题的写法。

原因

response.getWriter() 是流的形式,只能被调用一次,老问题了,代码的下面部分写法解决这个问题。

0 人点赞