选择视图用户动作
(控制器)
抽象用户和系统的事件的语意映射把用户输入翻译为系统事件根据用户的输入和上下文情况选择合适的视图显示数据事件
方法调用
图1
MVC体系结构
1报表定制系统研究关键技术
1.1MVC的体系结构
收稿日期2009-05-25:作者简介:关鑫,在读硕士研究生;黄地龙,教授
MVC的处理过程为:(1)用户在视图的界面上发出请求,视图把请求转发给控制器,控制器调用相应的模型来处理用户请求,模型进行相应的业务逻辑处理,并返回数据。(2)控制器调用相应的视图来显示模型返回的数据。1.2报表生成工具1.2.1报表设计器报表设计器用来设计Web报表模板,包括Web报表版面设计、数据源定义、数据重组(过
RCA2010.2总第155期
11
研究与开发
铁路计算机应用
第19卷第2期
滤、计算等)的函数设计、Web报表被引用参数的定义等。报表设计器的目的是通过图形界面向导设计出需要的报表模板文件。本文采用IReport作为报表设计器。IReport是一套为生成Jasper-Report报表模板的优秀可视化开发工具,它的核心是JasperReport引擎,IReport内置基于JFree-Chart的ChartTool工具可以方便绘制
常用的柱状图、饼图、曲线图、区域图、分布图、混合图、甘特图以及一些仪表盘等,可满足一般报表的需求。1.2.2报表生成器引擎报表生成器引擎JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF、
HTML、XLS、CSV或者XML格式。它完全是用Java编写的,而且可以在各种Java应用中使用,如J2EE或者Web应用,动态地生成内容。它的主要目标是用来帮助以简单灵活的方式来创建面向页面、可打印的
文档。1.3报表定制生成步骤1.3.1解析报表JasperReport使用可视化工具IReport进行报表模板的设计,报表模板采用XML文档进行定义,文档以.jrp
xml为文件后缀名。JasperReports利用SAX2.0API对模板文件进行解析,使用org.xml.sax.helpers.XMLReaderFactory类的create-XMLReader()来获得解析器实例。解析过程由报表引擎自带的解析包完成。1.3.2编译报表使用IReport完成报表格式设计以后,就要对这个.jrpxml文件进行编译,通过调用JasperRe-port类库中的JasperCompileManager.compile-Report()将生成扩展名为.jasper的二进制文件。通过编译,报表设计被加载到一个报表设计对象(net.sf.jasperreports.engine.JasperReport类的实例)中并被序列化然后保存。编译后的文件是待填充的报表,以方便应用程序用各种数据集产生不同的报表文档。1.3.3填充报表报表填充过程是JasperReportlib
rary最重要的功能。可以调用net.sf.jasper.engine.JasperFill-Manager类,把数据源和所需的参数填充到.jasper文件中去,生成.jrprint文件。.jrprint文件已经是填充了数据的报表。在填充的过程中需要三种输入:
122010.2总第155期
RCA
报表模板、参数和数据源。填充完数据后,输出的是一个最终的要被查看,打印或导出到其他格式的文档。1.3.4查看报表报表填充的结果是一个表示待打印文档的对象(net.sf.jasperreports.engine.JasperPrint类的实例)JasperReport拥有一个内置的查看器net.sf.,jasper.view.JRView,这是一个基于Swing的应用程序组件,用户可以通过继承这个类来定制自己所需的查看器,进行打印预览。1.3.5打印报表JasperReport类库的主要目标,就是生成可打印的文档。可以调用net.sf.jasper.engine.Jasper-PrintManager来打印JasperReport生成的文档。1.3.6导出报表通过调用JasperExportManager类将Jasper-Report生成的文档从其特有的格式导出到其他更为流行的格式,目前支持主流的PDF、XML、HTML、RTF等文件格式的导出,也可以在此基础上对其进行扩展,以支持新的格式的输出。
屏幕预览打印机打印解析XML报表定义文件编译生成.jrprin文件报表打印生成.jrprin文件报表导出PDF格式RTF格式
图2
报表产生原理