1.问题描述:
getOutputStream此响应已经被调用。
部分异常代码:
2022-10-17 14:24:33.168 ERROR 3436 --- [nio-8920-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/license-management] threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:584) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:114) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:114) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:114) ~
2.问题排查:
- 原因1:查看你自己的代码中是否有位置使用了response.getOutputStream()的操作
response.getOutputStream().write(参数);
如果有使用,你在这方法之后又使用了response.getWriter()的相关操作那么就会出现如上的问题。
response.getWriter().write(参数);
我是先使用了上图中的writeErrorResp()方法后又调用了renderJson()方法所以出现了最开始的问题。