Caused by: java.lang.IllegalStateException: getWriter() has already been called for this response
异常堆栈:看着是一个响应流被再次使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Caused by: java.lang.IllegalStateException: getWriter() has already been called for this response at org.apache.catalina.connector.Response.getOutputStream(Response.java: 550 ) ~[tomcat-embed-core- 9.0 . 53 .jar: 9.0 . 53 ] at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java: 210 ) ~[tomcat-embed-core- 9.0 . 53 .jar: 9.0 . 53 ] at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java: 105 ) ~[tomcat-embed-core- 9.0 . 53 .jar: 4.0 .FR] at org.springframework.http.server.ServletServerHttpResponse.getBody(ServletServerHttpResponse.java: 97 ) ~[spring-web- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java: 422 ) ~[spring-web- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java: 104 ) ~[spring-web- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java: 290 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java: 219 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java: 78 ) ~[spring-web- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java: 135 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java: 895 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java: 808 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java: 87 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 1067 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java: 963 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java: 1006 ) ~[spring-webmvc- 5.3 . 10 .jar: 5.3 . 10 ] ... 35 common frames omitted |
找了半天检查了所有拦截器都没发现为什么,后来发现 统一异常处理 HandlerExceptionResolver,在用响应流写了异常信息jjson 以后, 方法返回值返回了一个null,返回null 的时候 spring会返回一个默认值。
处理办法发:return new ModelAndView();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { System.out.println( "异常:" + ex ); try { response.setCharacterEncoding( "UTF-8" ); response.setContentType( "application/json; charset=utf-8" ); PrintWriter writer = response.getWriter(); writer.write( "{\"=exMsg\":" + ex.getMessage() + "}" ); writer.flush(); } catch (IOException e) { e.printStackTrace(); } //不能返回null,不要spring或默认返回一个 return new ModelAndView(); //return null; } |
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2022-06-22 14:52 zhangyukun 阅读(384) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南