日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cannot call sendError() after the response has been committed

發(fā)布時(shí)間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cannot call sendError() after the response has been committed 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在下載excel模版時(shí)報(bào)錯(cuò):

2017-10-18 11:48:08.217 [http-bio-8080-exec-16] WARN o.s.w.s.m.support.DefaultHandlerExceptionResolver at 156 - Handling of [org.springframework.web.HttpMediaTypeNotAcceptableException] resulted in Exception
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:466) ~[catalina.jar:7.0.65]
at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:128) ~[servlet-api.jar:na]
at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.handleHttpMediaTypeNotAcceptable(DefaultHandlerExceptionResolver.java:246) ~[spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.doResolveException(DefaultHandlerExceptionResolver.java:119) ~[spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:138) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1183) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1020) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) [servlet-api.jar:na]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) [servlet-api.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.65]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat7-websocket.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.65]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.65]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.65]

下載模版的方法

protected void uploadTemplate(HttpServletResponse res, HttpServletRequest req, String excelName,String templatePath) throws Exception {this.request = req;this.response = res;this.excelName = excelName;InputStream in = null;try {// 打開已有的excelin = new FileInputStream(templatePath);// 新建excelXSSFWorkbook wb = new XSSFWorkbook(in);setResponseHeader();OutputStream os = res.getOutputStream();wb.write(os);os.flush();os.close();} catch (Exception e) {logger.error("err method:uploadTemplate,Exception:{}", e);throw e;} finally {try {in.close();} catch (IOException e) {logger.error("err method:exportExcel 關(guān)閉流失敗");throw e;}}}

調(diào)用的controller方法

@ResponseBody@RequestMapping(value = "uploadTemplate", method = RequestMethod.POST)public ResultDTO uploadTemplate(HttpServletResponse res, HttpServletRequest req) throws Exception {try {String excelName = "污水廠水質(zhì)監(jiān)測";Long orgId = req.getParameter("orgId") == null ? null : Long.valueOf(req.getParameter("orgId"));String technicsId = "";if (orgId != null) {Waterworks ww = waterWorksService.findByRemarks(orgId.toString());if (ww != null) {technicsId = ww.getTechnics().toString();}}String strExcelPath = "";if (ConstantDicId.SWZP_DIC_ID.equals(technicsId)) {strExcelPath = RealityExpenditureController.class.getClassLoader().getResource("ModelSewage.xlsx").getPath();super.uploadTemplate(res, req, excelName, strExcelPath);} else if (ConstantDicId.SWJCYHF_DIC_ID.equals(technicsId)) {strExcelPath = RealityExpenditureController.class.getClassLoader().getResource("ModelAAO.xlsx").getPath();this.uploadTemplateAAO(res, req, excelName, strExcelPath);}} catch (Exception e) {logger.error("err method:.uploadTemplate,Exception:{}", e);return ResultDTO.getFailure("uploadTemplate failure");}return ResultDTO.getSuccess("", "uploadTemplate success"); //錯(cuò)誤的地方}

出現(xiàn)這個(gè)錯(cuò)誤,一定是多次response導(dǎo)致的。可以這么理解,承載客戶端和服務(wù)器進(jìn)行Http交互的Socket連接已經(jīng)關(guān)閉了,而你還試圖發(fā)送數(shù)據(jù)給客戶端,顯然會(huì)出錯(cuò)。就好比我倆打電話,我都掛電話了,你還在“喂喂喂”。在上面的代碼中uploadTemplate方法中已經(jīng)調(diào)用了流的close方法? 在此之后在return 信息就會(huì)導(dǎo)致這個(gè)錯(cuò)誤

?

轉(zhuǎn)載于:https://www.cnblogs.com/yujianhuang/p/7686533.html

總結(jié)

以上是生活随笔為你收集整理的Cannot call sendError() after the response has been committed的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。