JSP+iReport

JasperReports安装配置和制作
一、JasperReports简要介绍
^JasperReportsisapowerfulopensourceJavareportingtoolthathastheabilitytodeliverrichcontentontothescreen,totheprinterorintoPDF,HTML,XLS,CSVandXMLfiles.

ItisentirelywritteninJavaandcanbeusedinavarietyofJavaenabledapplications,includingJ2EEorWebapplications,togeneratedynamiccontent.

Itsmainpurposeistohelpcreatingpageoriented,readytoprintdocumentsinasimpleandflexiblemanner.

二、以下为JasperReports安装配置和制作步骤,希望能对初学者有所帮助。

1、JasperReport和iReport的资源,最新版本可以到下面官方网站得到。

iReport官方网站:
http://ireport.sourceforge.net

JasperReports官方网站:
http://jasperreports.sourceforge.net

2、安装
1)、JDK的安装,并配置JAVA_HOME。比如我的JAVA_HOME路径如下:
JAVA_HOME  D:\ProgramFiles\j2sdk1.4.2_03

2)、由于中文的问题,所以还需要下载:itext-1.02b.jar和iTextAsian.jar包。下载地址:http://itext.sourceforge.net/downloads/iTextAsian.jar
并在CLASSPATH中设置。例如我的CLASSPATH如下:
CLASSPATHE:\ProgramFiles\ApacheGroup\Tomcat4.1\webapps\testreport\WEB-INF\lib\itext-1.02b.jar;E:\ProgramFiles\ApacheGroup\Tomcat4.1\webapps\testreport\WEB-INF\lib\iTextAsian.jar;E:\ProgramFiles\ApacheGroup\Tomcat4.1\webapps\testreport\WEB-INF\lib;D:\tools\iReport0.2.3\lib

3)、iReport的安装iReport只要解压就OK,如果没有安装Ant,可以直接在iReport下的noAnt目录下,
运行startup.bat就可以了,这样iReport就可以启动了。

4)、JasperReport
Jasperreport不需要任何配置,你只需将下载以后的jar包放到classpath下即可。

5)、数据库的JDBC驱动包
加入到CLASSPATH中

3、详细资源
iReport官方提供了一些关于iReport视频,对于初学者很有帮助:
地址:http://ireport.sourceforge.net/docs.html

JasperReport官方提供的使用指南
地址:http://jasperreports.sourceforge.net/tutorial/index.html

JasperReport提供的一些例子:
地址:http://jasperreports.sourceforge.net/samples/index.html

4、常见问题
1)、iReport中提示框输入中文是不能正常显示,请将iReport下lib中的这个包删除tinylaf.jar
2)、在iReport中运行报表时如果出现乱码问题,请检查itext-1.02b.jar和iTextAsian.jar这两个包是否加到CLASSPATH
3)、在jsp或servlet高度报表时出现乱码或不显示,请检查你在报表设计过程中所设置的字体及其编码。比如:pdfname、pdfencoding

5、下面是两个调试例子  
Servlet:
importjavax.servlet.*;
importjavax.servlet.http.*;
importdori.jasper.engine.*;
importjava.io.*;
importjava.util.*;
importjava.sql.*;

/**
*@authorAdministrator
*
*Tochangethetemplateforthisgeneratedtypecommentgoto
*Window>Preferences>Java>CodeGeneration>CodeandComments
*/
publicclassTestReportextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Connectionconn=null;

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=
DriverManager.getConnection(
"jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=pm;user=sa;password=sa");

ServletContextservletContext=this.getServletContext();
FilereportFile=
newFile(servletContext.getRealPath("test/iteminfo.jasper"));
Mapparameters=newHashMap();
Integeri=newInteger(8);
parameters.put("pjId",i);
byte[]bytes=
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStreamouputStream=response.getOutputStream();
ouputStream.write(bytes,0,bytes.length);
ouputStream.flush();
ouputStream.close();
}catch(JRExceptionjre){
System.out.println("JRException:"+jre.getMessage());
}catch(Exceptione){
System.out.println("Exception:"+e.getMessage());
}

}

publicvoiddoPost(
HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{

doGet(request,response);

}

}

JSP:
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="dori.jasper.engine.*"%>
<%@pageimport="java.util.*"%>
<%@pageimport="java.io.*"%>
<%@pageimport="java.sql.*"%>

<%
//数据库连接
Connectionconn=null;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=pm;user=sa;password=sa");

//取到编译后的jasper文件
FilereportFile=newFile(application.getRealPath("test/iteminfo.jasper"));

//向报表中定义的参数赋值
Mapparameters=newHashMap();
Integeri=newInteger(8);
parameters.put("pjId",i);

byte[]bytes=
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn
);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStreamouputStream=response.getOutputStream();
ouputStream.write(bytes,0,bytes.length);
ouputStream.flush();
ouputStream.close();
%>

你可能感兴趣的:(IREPORT)