关于怎么整合网上到处都是例子、apache也有比较详细的例子说明,我是参考这篇文章的http://www.blogjava.net/sterning/archive/2008/01/02/172317.html我使用他的源码HTML预览时还是不能正常显示,images/px(网上的一种解决方案)都有还是不能正常显示,无奈之下只有查看源代码了。
Struts2对通过JasperReportsResult.java类的doExecute方法对JasperReport进行了简单的整合,这个方法对JasperReport的API简单的包装(车轮理论^_^)
JasperReportjasperReport=(JasperReport)JRLoader.loadObject(systemId);
jasperPrint=JasperFillManager.fillReport(jasperReport,parameters,stackDataSource);
其中systemId是这样来的
StringsystemId=servletContext.getRealPath(finalLocation);
也就是导入的是Jasper文件的绝对路径,Struts2直接使用的jasper文件(编译报表很耗时!不推荐使用jrxml文件)
paramname="location"/jasper/notification.jasper/param
至于Action的代码就不必写的那么复杂了
packageorg.bulktree.jasper;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)importnet.sf.jasperreports.engine.JRDataSource;
importnet.sf.jasperreports.engine.JREmptyDataSource;
importnet.sf.jasperreports.engine.JasperCompileManager;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionSupport;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)/**
*
*@authorbulktreeEmail:laoshulin@gmail.com@Nov26,2008
*/
publicclassJasperActionextendsActionSupport{
privateJRDataSourcereportDataSource;
@Override
publicStringexecute()throwsException{
//定义一个自定义的数据源
reportDataSource=newJREmptyDataSource();
/*编译很耗时,Ireport可以编译jrxml文件可以减少程序运行的压力
*下面一段代码可以不写直接使用Ireport编译好的jasper文件
*
*/
/* ServletActionContext.getRequest().setAttribute("name","LAOSHULIN");
Stringpath=ServletActionContext.getServletContext().getRealPath("/jasper");
System.out.println(path);
StringsourceFileName=path+""+"CarInstance.jrxml";
StringdestFileName=path+""+"CarInstance.jasper";
JasperCompileManager.compileReportToFile(sourceFileName,destFileName);*/
returnSUCCESS;
}
publicJRDataSourcegetReportDataSource(){
returnreportDataSource;
}
}
packageorg.bulktree.jasper;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)importnet.sf.jasperreports.engine.JRDataSource;
importnet.sf.jasperreports.engine.JREmptyDataSource;
importnet.sf.jasperreports.engine.JasperCompileManager;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionSupport;
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)/**
*
*@authorbulktreeEmail:laoshulin@gmail.com@Nov26,2008
*/
publicclassJasperActionextendsActionSupport{
privateJRDataSourcereportDataSource;
@Override
publicStringexecute()throwsException{
//定义一个自定义的数据源
reportDataSource=newJREmptyDataSource();
/*编译很耗时,Ireport可以编译jrxml文件可以减少程序运行的压力
*下面一段代码可以不写直接使用Ireport编译好的jasper文件
*
*/
/* ServletActionContext.getRequest().setAttribute("name","LAOSHULIN");
Stringpath=ServletActionContext.getServletContext().getRealPath("/jasper");
System.out.println(path);
StringsourceFileName=path+""+"CarInstance.jrxml";
StringdestFileName=path+""+"CarInstance.jasper";
JasperCompileManager.compileReportToFile(sourceFileName,destFileName);*/
returnSUCCESS;
}
publicJRDataSourcegetReportDataSource(){
returnreportDataSource;
}
}