今天用jsp显示jasperReport时报如下错误:
[14:48:13.906] java.lang.IllegalStateException: http://127.0.0.1:8083/test.jsp: tried to write 1544 bytes with content-length 1439
[14:48:13.906] at com.caucho.server.connection.ResponseStream.lengthException(ResponseStream.java:548)
[14:48:13.906] at com.caucho.server.connection.ResponseStream.writeNext(ResponseStream.java:416)
[14:48:13.906] at com.caucho.server.connection.ToByteResponseStream.flushByteBuffer(ToByteResponseStream.java:518)
[14:48:13.906] at com.caucho.server.connection.ToByteResponseStream.flushBuffer(ToByteResponseStream.java:424)
[14:48:13.906] at com.caucho.server.connection.ResponseStream.flush(ResponseStream.java:579)
[14:48:13.906] at com.caucho.server.connection.ServletOutputStreamImpl.flush(ServletOutputStreamImpl.java:73)
[14:48:13.906] at _jsp._test__jsp._jspService(_test__jsp.java:77)
[14:48:13.906] at com.caucho.jsp.JavaPage.service(JavaPage.java:60)
[14:48:13.906] at com.caucho.jsp.Page.pageservice(Page.java:570)
jsp如下:
<%@ page language="java" pageEncoding="GBK"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.util.Map"%>
<%@page import="java.io.File"%>
<%@page import="java.util.HashMap"%>
<%@page import="net.sf.jasperreports.engine.JasperCompileManager"%>
<%@page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Enumeration"%>
<%@page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>
<%@page import="java.io.ByteArrayOutputStream"%>
<%@page import="net.sf.jasperreports.engine.export.JRHtmlExporterParameter"%>
<%@page import="net.sf.jasperreports.engine.export.JRHtmlExporter"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="javax.servlet.ServletOutputStream"%>
<%@page import="net.sf.jasperreports.engine.util.JRProperties"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
Connection connection = null;
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.2.10:1521:ytsafe";
String user = "system";
String pwd = "ytsafe";
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, user, pwd);
String path = application.getRealPath("/jasper");
path += "/";
String libsPath=application.getRealPath("WEB-INF/lib")+"/jasperreports-1.3.3.jar";
JRProperties.setProperty(JRProperties.COMPILER_CLASSPATH, libsPath);
System.setProperty("jasper.reports.compile.class.path", libsPath);
JasperCompileManager.compileReportToFile(path+"lossA.jrxml",path+"lossA.jasper");
//JasperCompileManager.compileReportToFile(path+"pieTest.jrxml",path+"pieTest.jasper");
Map map = new HashMap();
map.put("entpID", 101);
byte[] bytes = JasperRunManager.runReportToPdf(path+"lossA.jasper", map, connection);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
connection.close();
out.clear();
out = pageContext.pushBody();
} catch (Exception e) {
e.printStackTrace();
}
%>
原来,jsp在编译成servlet时,会把换行符等各种标点也一起编译,导致文件长度和response.setContentLength(bytes.length);不一致。解决办法如下,新建一个servlet,把上面jsp的内容贴进去,OK!
分享到:
相关推荐
【jasperreport+jsp+mysql】的组合是用于在Web应用程序中生成动态报表的一种常见技术栈。jasperreport是一款强大的开源报表工具,它允许开发者设计复杂的报表并将其集成到Java应用中。jsp(JavaServer Pages)是Java...
jasperreport+ireport+jfreechart文档及代码1 jasperreport+ireport+jfreechart文档及代码1 jasperreport+ireport+jfreechart文档及代码1
jasperreport+ireport+jfreechart文档及代码2 jasperreport+ireport+jfreechart文档及代码2 jasperreport+ireport+jfreechart文档及代码2
在"使用JasperReport+iReport进行WEB开发"的实践中,首先需要安装并配置iReport,下载并解压后,可以通过它来设计报表模板。模板设计完成后,将其保存为.jrxml文件,这是JasperReport的XML格式,包含了报表的所有...
JasperReport和iReport是Java世界中常用的报表生成工具,它们可以帮助开发者轻松创建复杂的报表,并在Web应用程序中集成。在JasperReport 2.0.2和iReport 2.0.2版本中,我们可以实现多种功能,包括字段、变量、参数...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
【JasperReport与IReport简介】 JasperReport是一款开源的报表生成工具,它允许开发者创建复杂的报表设计,并能够导出多种格式,如PDF、HTML、Excel等。JasperReport的核心是基于XML的报表模板,这些模板可以包含...
### jasperReport与Spring框架集成应用详解 #### 一、jasperReport简介及Spring环境配置 **jasperReport**是一款非常强大的报表工具,它能够基于Java环境生成多种格式的报表,如PDF、HTML、XLS(Excel)、CSV以及...
JasperReports 是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换 ...它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。JasperReports 完全是由 Java 写成,...
标题“jasperReport+struts2+jatoolsPrinter打印”涉及的是一个集成开发场景,主要集中在Java企业级应用中的报表生成和打印功能。jasperReport是一个强大的开源报表工具,能够帮助开发者创建复杂的报告设计;Struts2...
iReport+JasperReport柱状图开发指南 本文详细介绍了使用iReport和JasperReport开发柱状图的过程,包括确定数据源类型、开发数据源类、设计图表属性等步骤。作者分享了自己的实践经验,遇到的困难和解决方法,旨在...
**JasperReport与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...
### ireport+jasperReport+Swing总结 #### 一、概述 本文档旨在总结 ireport 4.1.3 版本与 jasperReport 4.5.0 版本结合 Swing 在报表设计与生成方面的应用。通过图文并茂的方式详细介绍如何使用 ireport 设计报表...
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
7. **jasperreport+ireport开发java报表入门级教程.pdf**:专门针对Java开发者的入门教程,详细解释如何使用JasperReport和IReport构建报表。 8. **jasperReport.pdf**:可能是一个JasperReport的官方文档或者第三方...
Struts2.0+JasperReport+IReport+Oracle 报表开发整个项目打包上传,用MyEclipse导入即可调试使用含报表文件、数据库表结构及测试数据,项目中解决了PDF中文
JasperReport+iReport是一种强大的报表开发工具组合,用于在Java应用程序中创建复杂的报表,具有非常丰富的报表展示功能和灵活的数据处理能力。本手册将详细探讨如何使用JasperReport和iReport开发报表,以及它们...
### JasperReport+iReport 报表工具详细开发手册 #### 1. 简介 JasperReport是一款功能强大的报表引擎,适用于Java应用环境。它能够根据预设的模板生成多种格式的报表,如PDF、HTML、Excel等。iReport则是...
【JasperReport+iReport 高级报表设计实战】 在IT领域,报表系统是许多企业级应用的核心部分,用于展示和分析数据。JasperReport是一款强大的开源报表生成工具,而iReport则是它的可视化设计界面,降低了报表设计的...
### JasperReport+iReport 报表开发手册核心知识点详解 #### 一、JasperReport与iReport概述 **JasperReport** 是一款强大的、灵活的报表生成工具,它能够展示丰富的页面内容,并支持将这些内容转换为PDF、HTML或...