JasperReport与Spring集成

本文介绍了如何将JasperReport与Spring集成,包括使用iReport创建.jrxml文件,修改语言为Java,以及在Spring配置文件中进行设置,最后通过Controller展示报表。成功实现了在浏览器中显示报表内容。

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

前几天有同学让我帮忙看看他的一个小项目中的错误,这是他从网上下载下的一个Jasper Report 与 Spring 集成的样例。以前没看过报表方面的知识,也不知道如何使用JasperReport,当天晚上看他的样例花费了几个小时,无功而返。第二天早上上网那个查询了一些资料,终于搞定了这个问题。

Spring 集成 JasperReport, 离不开.jrxml(报表的定义文件)文件或者.jasper文件。生成.jrxml文件需要使用一个工具:Jaspersoft iReport。从youtube上观看了个iReport的教程,花了一小会儿,能够使用了。使用iReport时需要注意一个问题:我们使用的变成语言是Java,而iReport默认的语言是Groovy,这样生成的.jrxml文件在eclipse中会报错。解决方法:修改.jrxml文件,将language该为java;或者将iReport默认语言改为java,重新生成也可。

Coding Time:

1.导入相关jar文件(Spring MVC 依赖, jasper依赖)。

2.web.xml与普通Spring MVC项目一样(只需定义DispatcherServlet即可)。

3.最重要的部分:

在Spring配置文件:spring-servlet.xml中:

//定义XmlViewResolver
<bean class="org.springframework.web.servlet.view.XmlViewResolver" p:location="/WEB-INF/jasper_view.xml"  p:order="0" />
// Spring中有两个特殊的ViewResolver:XmlViewResovler和ResourceBundleViewResovler。XmlViewResovler是ViewResolver的一种实现,它使用定义在xml文件中的Bean,这个xml文件的路径由XmlViewResolver中的location属性指定(正如这里需要使用的定义在WEB-INF文件夹下的jasper_view.xml中定义的bean),需要注意的是XmlViewResolver不支持国际化;ResourceBundleViewResolver使用properties文件中定义的Bean,通过basename属性来指定properties文件,该ViewResolver支持国际化。



4.jasper_view.xml文件

定义一个视图Bean,用来显示报表

// 这里使用JasperReportsPdfView来呈递pdf格式的报表
<bean id="pdfView" class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView">
<property name="url" value="/WEB-INF/report/user_report.jrxml" />
<property name="reportDataKey" value="users" />
</bean>     
// url 属性指定报表定义文件.jrxml的路径
// reportDataKey  代表存储报表数据的Model中的属性名


5.使用iReport Designer 生成.jrxml文件,它包含所要显示的域(如:id, name, introduction)

6.定义Domain以及Controller

User:  id, name, introdution
Controller 片段代码:
list.add(user);
list.add(user2);
JRDataSource datasource = new JRBeanCollectionDataSource(list);// 这里不转化为JRDataSource也可
ModelMap model = new ModelMap();
model.addAttribute("users", userDatasource());
ModelAndView mav = new ModelAndView("pdfView", model);
return mav;


需要注意一点:这里返回的视图名与jasper_view.xml中定义的视图名一致。


呵呵,大功告成,访问浏览器:http://localhost:8080/jasper_report/report,成功地显示了两条user记录,Well Done。



        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值