今天用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的报表实例,将静态的数据源改为从数据库中去,由于jar较大,所以不予上传,如有需要请私下联系!
使用JasperReport+iReport进行WEB开发,是这篇文章http://blog.csdn.net/tch918/article/details/12200607的源码
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例,jasperReport+java
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
学习完jasperreports+ireport,给我感觉深刻,不仅掌握了报表开发技术,还掌握了如何在web中生成pdf,xls,rtf文件,以下是jasperreports+ireport开发知识点: 1.字段,变量,参数,传参 2.矢量图,位图 3.超链接,锚 ...
JasperReports 是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换 ...它有一个相关的开源工程--IReport,这是一个图形化的辅 助工具,主要用于数据报表设计。JasperReports 完全是由 Java 写成,...
开发源码 博文链接:https://andrawu.iteye.com/blog/37022
jasperreport+struts2包 可以使用
jasperreport+applet客户端打印demo
JasperReport+iReport打印固定格式文件的测试工程源码
一个完整的jasperreport+myeclipse+struts2例子,方便大家学习
JasperReport+iReport报表开发手册.pdf
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
JasperReport+iReport整合的Web报表开发这篇文章的PDF版本
Struts2.0+JasperReport+IReport+Oracle 报表开发整个项目打包上传,用MyEclipse导入即可调试使用含报表文件、数据库表结构及测试数据,项目中解决了PDF中文
jasperreport+ireport开发java报表入门级教程(完整版)
JasperReport+struts+spring+hibernate+extjs4.1
JasperReport+iReport报表工具详细开发手册.pdf