javaweb+jasperreports报表+struts2

本文详细介绍了如何在javaweb项目中,使用struts2框架结合jasperreports进行报表开发,包括利用struts2 action不配置result直接输出、通过HttpServletResponse输出、配置stream result以及使用struts2的jasperreports插件。文中提供了不同方法的实例代码,强调了版本匹配和数据源选择的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将详细介绍javaweb中采用struts2框架的jasperreports报表开发方法,数据源选取的是connection。模板选取的是编译后的模板(jasper格式文件)。

网上很多教程采用了jasperreports-3.x.x的api ,本文采用jarjasperreports-5.6.0.jar的api,两个版本的区别还是很大的,3.x.x版本的很多方法已经过时废弃了。

建议统一采用jarjasperreports-5.6.0.jar版本,因为生成报表的这些工具目前都有,jar包也齐全。3.x.x版的开发工具有,但是配套的jar包只能一个一个找了,另外很多方法已经过时了。

jasperreports的数据源可以有多种,list,JavaBean,connection等,为了不跟后台service层和dao层等关联起来,我们采用connection作为数据源。(因为后台如果用到了hibernate等框架,list,JavaBean等获取数据源就要做大量工作:写JavaBean,写映射文件等;采用connection数据源的话我们可以把sql语句写在模板中,在action中只是传map格式的参数和connection连接就可以了)

action中需要的HttpServletResponse对象和ServletContext对象可以通过实现ServletResponseAware和ServletContextAware接口来得到。更多方法可以参照此链接

jasperreports类里面的路径处理很纠结,为了方便期间统一使用servletContext的getRealPath方法来处理。

选择编译后的模版,可以减轻服务器负载,另外在action中编译的话,很容易因为编译器版本和产生报表工具版本不一致导致编译期间出错。jdt-compiler-3.1.1.jar和jasperreports-5.6.0.jar是匹配的。另外jaspersoft和ireport里面可以很方便的编译。(下面的实例代码pdf方法中中包含了编译)

相关代码、工具、参考文档、源码等下载链接


一、利用struts2,action中不配置result,当然action中对应方法就不用返回值了,利用JRExporter对象的exportReport()输出到浏览器端。

1.开发jrxml格式的报表文件,可以用jaspersoft-studio或者ireport开发。将其放入我们web项目的WebRoot目录下。

2.将jrxml格式的文件编译为jasper格式的文件。

3.给jasper格式的文件填充数据并生成jrprint格式文件或流(不可以生成别的文件格式,jrprint格式的文件可以序列化)。比如:使用JasperFillManager.fillReport生成jrprint格式的文件。

4.利用JRExporter接口的具体实现类HtmlExporter、JRPdfExporter、JRXlsExporter等导出类将jrprint格式的文件生成html、pdf、xls格式的文件,并且导出到response的OutputStream流,从而输出到浏览器页面上。(当然也可以用JasperExportManager来代替前面的JRExporter实现类,不过该类只能处理3中格式(pdf、html、xml)的文件,要处理其他格式就要用具体的JRExporter具体实现类)

以上流程可参考下图(图片来源于网络)


开发流程中涉及的JasperReports相关类



二、利用struts2,action中不配置result,action中对应方法无返回值,在action中直接调用HttpServletResponse类的OutputStream类对象进行输出,从而输出到浏览器端。

1.开发jrxml格式的报表文件,可以用jaspersof

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值