jasperreport学习官方例子:webapp
2011-10-28 11:41
211 查看
学习开源项目的最好办法:通过学习官方例子。当然,在这之前最好看看关于这个开源项目是什么东东,有什么基本概念。
对于jasperreport,建议先看看官网里面的这篇文章:
http://jasperforge.org/projects/jasperreports
一、将webapp部署到tomcat上
首先,要run一下ant对应的build.xml文件
看一下主要是做了以下两个事情:
1、将一些需要的jar文件拷贝到lib目录下(注意执行build操作时,这个webapp目录必须要在原来的目录下,或者需要修改build.xml文件里面的部分目录参数)
2、编译class目录下java文件
当然,还可以打包的,但是发现这个功能在这个build.xml中有点问题,所以索性复制整个目录到tomcat里面算了!
到此为止,我们可以通过这个build.xml文件可以学习到这个webapp需要什么lib的支持!
然后,就是复制目录了
最后,就是启动tomcat。
二、通过webapp学习报表生成的过程
步骤一:compile JRXML
例子原来在reports目录就有一个WebappReport.jrxml文件(一个xml文件)
这个步骤完成的就是将WebappReport.jrxml文件编译成一个对应的WebappReport.jasper
示例中分别用了两种方式,servlet和jsp,其实做的东西都差不多,不过个人推荐使用jsp。
下面就节选完成这个步骤的关键代码:
try
{
JasperCompileManager.compileReportToFile(context.getRealPath("/reports/WebappReport.jrxml"));
}
catch (JRException e)
{
注:在这种情况下,生成的jasper文件的目录与/WebappReport.jrxml一样
总结:一般编译jasper文件不是在线完成的,在线下完成;而且不容易改变的!
步骤二:fill report
将数据渲染到report模板中,得到一个JasperPrint对象
将这个JasperPrint对象放到session,以便后续处理!
关键代码以及分析:
try
{
String reportFileName = context.getRealPath("/reports/WebappReport.jasper");
File reportFile = new File(reportFileName);
if (!reportFile.exists())
throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");
//parameters用来对原来jrxml中自定义的parameter进行赋值
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("BaseDir", reportFile.getParentFile());
//里面的 new WebappDataSource()对象是数据的来源
JasperPrint jasperPrint =
JasperFillManager.fillReport(
reportFileName,
parameters,
new WebappDataSource()
);
//上面生成的JasperPrint对象可以理解成一个渲染了数据的report的包裹
request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
}
catch (JRException e)
步骤三:export report
根据不同要求(文件格式),将JasperPrint对象以对应的文件格式显示出来。
比如说将report以pdf的方式:
//从session中取回jasperPrint对象
List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);
62
63 if (jasperPrintList == null)
64 {
65 throw new ServletException("No JasperPrint documents found on the HTTP session.");
66 }
67
68 Boolean isBuffered = Boolean.valueOf(request.getParameter(BaseHttpServlet.BUFFERED_OUTPUT_REQUEST_PARAMETER));
69 if (isBuffered.booleanValue())
70 {
//生成输出器
71 JRPdfExporter exporter = new JRPdfExporter();
72 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
73
74 ByteArrayOutputStream baos = new ByteArrayOutputStream();
75 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
76
77 try
78 {
//输出
79 exporter.exportReport();
80 }
81 catch (JRException e)
解释结束!
对于jasperreport,建议先看看官网里面的这篇文章:
http://jasperforge.org/projects/jasperreports
一、将webapp部署到tomcat上
首先,要run一下ant对应的build.xml文件
看一下主要是做了以下两个事情:
1、将一些需要的jar文件拷贝到lib目录下(注意执行build操作时,这个webapp目录必须要在原来的目录下,或者需要修改build.xml文件里面的部分目录参数)
2、编译class目录下java文件
当然,还可以打包的,但是发现这个功能在这个build.xml中有点问题,所以索性复制整个目录到tomcat里面算了!
到此为止,我们可以通过这个build.xml文件可以学习到这个webapp需要什么lib的支持!
然后,就是复制目录了
最后,就是启动tomcat。
二、通过webapp学习报表生成的过程
步骤一:compile JRXML
例子原来在reports目录就有一个WebappReport.jrxml文件(一个xml文件)
这个步骤完成的就是将WebappReport.jrxml文件编译成一个对应的WebappReport.jasper
示例中分别用了两种方式,servlet和jsp,其实做的东西都差不多,不过个人推荐使用jsp。
下面就节选完成这个步骤的关键代码:
try
{
JasperCompileManager.compileReportToFile(context.getRealPath("/reports/WebappReport.jrxml"));
}
catch (JRException e)
{
注:在这种情况下,生成的jasper文件的目录与/WebappReport.jrxml一样
总结:一般编译jasper文件不是在线完成的,在线下完成;而且不容易改变的!
步骤二:fill report
将数据渲染到report模板中,得到一个JasperPrint对象
将这个JasperPrint对象放到session,以便后续处理!
关键代码以及分析:
try
{
String reportFileName = context.getRealPath("/reports/WebappReport.jasper");
File reportFile = new File(reportFileName);
if (!reportFile.exists())
throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");
//parameters用来对原来jrxml中自定义的parameter进行赋值
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("BaseDir", reportFile.getParentFile());
//里面的 new WebappDataSource()对象是数据的来源
JasperPrint jasperPrint =
JasperFillManager.fillReport(
reportFileName,
parameters,
new WebappDataSource()
);
//上面生成的JasperPrint对象可以理解成一个渲染了数据的report的包裹
request.getSession().setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
}
catch (JRException e)
步骤三:export report
根据不同要求(文件格式),将JasperPrint对象以对应的文件格式显示出来。
比如说将report以pdf的方式:
//从session中取回jasperPrint对象
List jasperPrintList = BaseHttpServlet.getJasperPrintList(request);
62
63 if (jasperPrintList == null)
64 {
65 throw new ServletException("No JasperPrint documents found on the HTTP session.");
66 }
67
68 Boolean isBuffered = Boolean.valueOf(request.getParameter(BaseHttpServlet.BUFFERED_OUTPUT_REQUEST_PARAMETER));
69 if (isBuffered.booleanValue())
70 {
//生成输出器
71 JRPdfExporter exporter = new JRPdfExporter();
72 exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
73
74 ByteArrayOutputStream baos = new ByteArrayOutputStream();
75 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
76
77 try
78 {
//输出
79 exporter.exportReport();
80 }
81 catch (JRException e)
解释结束!
相关文章推荐
- jasperreport学习官方例子:webapp
- ASIO官方例子学习2.聊天室(allocation/server.cpp)
- [Unity热更新]ulua学习笔记02:官方例子
- 最快学习百度地图android开发的方法探讨--从官方例子开始之问题处理-例子分割
- KING_U3D学习之Unity Test Tools(一)_官方例子解析
- Coolite官方例子学习笔记三:按钮的花哨
- unity 插件iTween 官方例子学习心得
- Android TableLayout官方文档 例子学习笔记
- stenciljs 学习十二 官方doc 路由使用的例子
- opengl学习例子官方资料网
- apache POI学习——(一)试验apache官方的例子程序
- tensorflow学习之常用函数总结:tensorflow官方例子中的诸如tf.reduce_mean()这类函数
- JasperReport学习笔记2-创建简单的报表例子
- ASIO官方例子学习1.为服务器异步操作定制内存分配模型代码分析(allocation/server.cpp)
- Coolite官方例子学习笔记一:AjaxMethod的运用
- 适合新手学习TabBar的官方例子Tabster
- Coolite官方例子学习笔记四:服务器端的弹出框、确认框、输入框
- mina学习笔记二:从官方例子开始
- tensorflow学习之常用函数总结:tensorflow官方例子中的诸如tf.reduce_mean()这类函数
- 安卓开发学习2-官方例子Accelerometer