前几天有同学让我帮忙看看他的一个小项目中的错误,这是他从网上下载下的一个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。




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

被折叠的 条评论
为什么被折叠?



