
我正在尝试使用内容-配置将某些内容从服务器保存到客户端计算机.当我单击Jsp中的按钮时,对话框打开,我选择保存文件.文件已保存,但出现此异常.我已经读过其他类似的主题,例如“在某处,您的应用程序多次调用getoutputStream或getWriter”.但我不知道/不知道在哪里?
@Controllerpublic class ExportPhonebook2 { @autowired private PhoneBookService phoneBookSer; private voID setResponseheader(httpServletResponse response,String imenikTXT,file file){ response.setheader("Content-Length","" + file.length()); response.setContentType("application/txt; charset=UTF-8"); response.setheader("content-disposition","attachement; filename=imenik.txt" ); response.setheader("Content-transfer-encoding","binary"); } @RequestMapPing(value = "/exportPhonebook.HTML",method = RequestMethod.POST) public String exportPhonebook(Model model,httpServletResponse response) { List<User> listofAllUsers = phoneBookSer.fetchAllUsers(); String imenik = ""; for (User user : listofAllUsers) { imenik = imenik + user.getPrezime() + " " + user.getIme() + ",Telefon: " + user.getTelefon() + ";\r\n" ; } try { file file = new file("c:\imenik.txt"); setResponseheader(response,"imenik.txt",file); fileinputStream fileIn; fileIn = new fileinputStream(file); OutputStream outTXT = response.getoutputStream(); byte[] outputByte = new byte[8192]; //copy binary contect to output stream while(fileIn.read(outputByte,8192) != -1){ outTXT.write(outputByte,8192); } fileIn.close(); outTXT.flush(); outTXT.close(); } catch (fileNotFoundException e) { // Todo auto-generated catch block e.printstacktrace(); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); } return "homepage"; }}堆栈跟踪:
Exception initializing page contextjava.lang.IllegalStateException: Cannot create a session after the response has been committedat org.apache.catalina.connector.Request.doGetSession(Request.java:2705)at org.apache.catalina.connector.Request.getSession(Request.java:2231)at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:899)at javax.servlet.http.httpServletRequestWrapper.getSession(httpServletRequestWrapper.java:229)at org.apache.catalina.core.ApplicationhttpRequest.getSession(ApplicationhttpRequest.java:572)at org.apache.catalina.core.ApplicationhttpRequest.getSession(ApplicationhttpRequest.java:517)at javax.servlet.http.httpServletRequestWrapper.getSession(httpServletRequestWrapper.java:238)at javax.servlet.http.httpServletRequestWrapper.getSession(httpServletRequestWrapper.java:238)at org.apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:146)at org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:125)at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:112)at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:65)at org.apache.Jsp.WEB_002dINF.Jsp.homepage_Jsp._JspService(homepage_Jsp.java:58)at org.apache.jasper.runtime.httpJspBase.service(httpJspBase.java:70)at javax.servlet.http.httpServlet.service(httpServlet.java:722)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)at org.apache.jasper.servlet.JspServlet.serviceJspfile(JspServlet.java:391)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)at javax.servlet.http.httpServlet.service(httpServlet.java:722)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.Applicationdispatcher.invoke(Applicationdispatcher.java:684)at org.apache.catalina.core.Applicationdispatcher.doInclude(Applicationdispatcher.java:593)at org.apache.catalina.core.Applicationdispatcher.include(Applicationdispatcher.java:530)at org.springframework.web.servlet.vIEw.InternalResourceVIEw.renderMergedOutputModel(InternalResourceVIEw.java:229)at org.springframework.web.servlet.vIEw.AbstractVIEw.render(AbstractVIEw.java:250)at org.springframework.web.servlet.dispatcherServlet.render(dispatcherServlet.java:1047)at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:817)at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:719)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)at javax.servlet.http.httpServlet.service(httpServlet.java:641)at javax.servlet.http.httpServlet.service(httpServlet.java:722)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:328)at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:95)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.servletAPI.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:119)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.authentication.logout.logoutFilter.doFilter(logoutFilter.java:105)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:340)at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:175)at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.springframework.web.filter.CharacterEnCodingFilter.doFilterInternal(CharacterEnCodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.StandarDWrapperValve.invoke(StandarDWrapperValve.java:240)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)at org.apache.coyote.http11.http11Processor.process(http11Processor.java:243)at org.apache.coyote.http11.http11Protocol$http11ConnectionHandler.process(http11Protocol.java:188)at org.apache.coyote.http11.http11Protocol$http11ConnectionHandler.process(http11Protocol.java:166)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(UnkNown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(UnkNown Source)at java.lang.Thread.run(UnkNown Source)最佳答案造成此特殊异常的原因是,Spring MVC显然需要在呈现视图期间创建一个会话,但不能这样做,因为响应已经与文件下载一起提交了.但是您的实际问题更大,Spring MVC根本不应该呈现视图.在接管了来自Spring MVC的http响应的控制之后,您需要告诉Spring MVC不要渲染视图.否则,它将尝试将呈现的视图附加到http响应的末尾,这只会破坏文件下载.
我没有做Spring MVC,所以我无法从头开始回答,但是看来从控制器的action方法返回voID而不是String应该足够,以便告诉Spring MVC不呈现视图.
总结以上是内存溢出为你收集整理的java.lang.IllegalStateException内容-处置 全部内容,希望文章能够帮你解决java.lang.IllegalStateException内容-处置 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)