站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题java.lang.IllegalStateException: getOutputStream() has already been called for this response错误

java.lang.IllegalStateException: getOutputStream() has already been called for this response错误

摘要: java.lang.IllegalStateException: getOutputStream() has already been called for this response错误


我在打开iReport报表时出现这个错误,但是报表能正常显示,不知道是什么原因请大侠们帮解决一下~!

[WARN ] 2006-11-03 09:11:28 net.sf.jasperreports.engine.fill.JRBaseFiller - The supplied java.sql.Connection object is null.
[WARN ] 2006-11-03 09:11:28 net.sf.jasperreports.engine.fill.JRBaseFiller - The supplied java.sql.Connection object is null.
[WARN ] 2006-11-03 09:11:28 net.sf.jasperreports.engine.fill.JRBaseFiller - The supplied java.sql.Connection object is null.
[WARN ] 2006-11-03 09:11:29 net.sf.jasperreports.engine.fill.JRBaseFiller - The supplied java.sql.Connection object is null.
[ERROR] 2006-11-03 09:11:29 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/sqgl].[jsp] - Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:606)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:117)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:191)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
at org.apache.jsp.report.jsp.marriage_005fmanagement.marry_005ftd_005fjhz_jsp._jspService(org.apache.jsp.report.jsp.marriage_005fmanagement.marry_005ftd_005fjhz_jsp:192)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at filters.HibernateFilter.doFilter(HibernateFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
[ERROR] 2006-11-03 09:11:29 org.apache.catalina.core.ContainerBase.[Catalina].[localhost] - Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/Exception.jsp]
java.lang.IllegalStateException
at org.apache.coyote.Response.reset(Response.java:296)
at org.apache.catalina.connector.Response.reset(Response.java:652)
at org.apache.catalina.connector.Response.reset(Response.java:918)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:356)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:212)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:134)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)



这个错误算是很有特点了,原来我也遇到过。在CSDN也有这样的问题。
一般解决方式是<%%>和<%%>代码段之间不要有空格、分段这样的格式。特别是最后<%%>不能有回车。


不会吧,我好像原码里面没有看见有你说的那种情况
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="com.webrage.common.util.*" %>
<%@ include file="../report_package.jsp" %>
<%
Log log = LogFactory.getLog("marry_td_jhz.jsp");

String reportsPath = "/report/reports/marriage_management/";
Integer count = new Integer(request.getParameter("count"));
Integer trs14_id = new Integer(request.getParameter("trs14_id"));
if(count.intValue()==1){
reportsPath +=trs14_id+"/";
}
String jspPath = "/report/jsp/marriage_management/";

THJ05DAO thj05_dao = new THJ05DAO();
THJ05 thj05 = thj05_dao.load(new Integer(request.getParameter("id")));


//格式化日期
String recordDate=UtilTool.getStringFromDate(thj05.getThj0524()).substring(0,4)+"年"+
UtilTool.getStringFromDate(thj05.getThj0524()).substring(5,7)+"月"+
UtilTool.getStringFromDate(thj05.getThj0524()).substring(8,10)+"日";
String manBirthday=UtilTool.getStringFromDate(thj05.getThj0504()).substring(0,4)+"年"+
UtilTool.getStringFromDate(thj05.getThj0504()).substring(5,7)+"月"+
UtilTool.getStringFromDate(thj05.getThj0504()).substring(8,10)+"日";
String womanBirthday=UtilTool.getStringFromDate(thj05.getThj0514()).substring(0,4)+"年"+
UtilTool.getStringFromDate(thj05.getThj0514()).substring(5,7)+"月"+
UtilTool.getStringFromDate(thj05.getThj0514()).substring(8,10)+"日";


List list = new ArrayList();

MarriageCertificate record = new MarriageCertificate();

record.setRecordOrganName(thj05.getThj0527());
record.setRecorderUnderwrite(thj05.getThj0528());
record.setRecordDate(recordDate);
record.setRecordNo(thj05.getThj0525());
record.setDetail(thj05.getThj0535());

record.setManName(thj05.getThj0502());
record.setManBirthday(manBirthday);
record.setManIdentity(thj05.getThj0503());
record.setManCountry(thj05.getThj0506());

record.setWomanName(thj05.getThj0512());
record.setWomanBirthday(womanBirthday);
record.setWomanIdentity(thj05.getThj0513());
record.setWomanCountry(thj05.getThj0516());


list.add(record);

java.io.File reportFile = new java.io.File(application.getRealPath(reportsPath+"marry_td_jhz.jasper"));
java.io.File reportFile1 = new java.io.File(application.getRealPath(reportsPath+"marry_td_jhz_man_header.jasper"));
java.io.File reportFile2 = new java.io.File(application.getRealPath(reportsPath+"marry_td_jhz_man_detail.jasper"));
java.io.File reportFile3 = new java.io.File(application.getRealPath(reportsPath+"marry_td_jhz_woman_header.jasper"));
java.io.File reportFile4 = new java.io.File(application.getRealPath(reportsPath+"marry_td_jhz_woman_detail.jasper"));


if (!reportFile.exists())
throw new JRRuntimeException("File marry_td_jhz.jasper not found. The report design must be compiled first.");

JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
JasperReport jasperReport1 = (JasperReport)JRLoader.loadObject(reportFile1.getPath());
JasperReport jasperReport2 = (JasperReport)JRLoader.loadObject(reportFile2.getPath());
JasperReport jasperReport3 = (JasperReport)JRLoader.loadObject(reportFile3.getPath());
JasperReport jasperReport4 = (JasperReport)JRLoader.loadObject(reportFile4.getPath());
Map parameters = new HashMap();

parameters.put("marry_td_jhz_man_header", jasperReport1);
parameters.put("marry_td_jhz_man_detail", jasperReport2);
parameters.put("marry_td_jhz_woman_header", jasperReport3);
parameters.put("marry_td_jhz_woman_detail", jasperReport4);

Class clazz = Class.forName("com.report.bean.MarriageCertificate");
java.lang.reflect.Field[] field = clazz.getFields();

String[] fields = new String[field.length];
for (int i = 0;i < field.length ; i++){
fields[i] = field[i].getName();
}

list = ListParseUtil.getReportList("com.report.bean.MarriageCertificate",fields,list,true);
HibernateDataSource ds = new HibernateDataSource(list, fields);



byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
ds
);
//response.reset();
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream ;
//PrintWriter pw;
try{
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
//写二进制数据
}catch(Exception e){
//pw=response.getWriter();
//pw.println("There was an error: "+e.getMessage()) ;
}
%>


如果你是用JB开发的,那默认最后就会有一个回车,你用记事本打开可以看见。当然,你还需要检查一下中间是否有看不见的空格和回车。


不是我是用JSP的,郁闷了,看了看还是找不出什么原因





怎么办还是不得,谁能帮解决一下


没有人能帮顶一下吗~1


↑返回目录
前一篇: 我想读取解析一个网页中的XML数据,能实现吗?
后一篇: eclipse+myeclipse+tomcat的配置问题 新手提问 还请多指教