Spring MVC中使用JasperReport

jopen 9年前

JasperReport Report是一款强大的免费报表引擎,Spring MVC提供了对其的支持,由于JasperReport可以使用多种数据员,本文以javabean为数据源演示。
下载地址: spring-mvc-demo_v4.zip  提取码: SLeLPNcO
注意,本教程在写作的过程中maven 下载itext-2.1.7.js2.jar时总是下载不成功,可以KX上网手工下载,然后放在maven对应的目录下,maven的本地仓库目录默认为C:\Users\用户名\.m2\repository目录。

实现步骤

1、使用ireport设计报表模板(略)

本文生成的模板文件为Simple.jasper, 放在src/main/resources/reports/下,编译后会出现在WEB-INF/classes/reports/目录下。

2、修改pom.xml导入需要的依赖。

本系列示例开始使用的是spring 3.2.3 release 版本,为了使用Jasperreport, 升级为了spring 4.1.0 release版本,因为Jasperreport的package改变了,有Jasperreport改成了 net.sf.jasperreports。本文使用的依赖为

<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.3.6</version>
</dependency>

3、修改views.properties

views.properties是ResourceBundleViewResolver 使用的一个配置文件,具体内容可以参考我的上一篇博客

simpleReport.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView

simpleReport.url=/WEB-INF/classes/reports/Simple.jasper
simpleReport.reportDataKey=reportDataKey
  • simpleReport指定逻辑视图的名字
  • simpleReport.(class)指定视图的实现类
  • simpleReport.url指定模板文件位置
  • simpleReport.reportDataKey指定数据在Model中的Key

4、实现一个@Controller方法

@RequestMapping(value=”report”)

public String report(Map<String, Object> model){
model.put(“reportDataKey”, SimpleFactory.test());
return “simpleReport”;
}

SimpleFactory.test() 是我在设计模板时使用的产生数据的工厂方法。可以看到我们返回的逻辑视图是simpleReport且Model中的Key=reportDataKey

5、测试

访问http://localhost:8080/mvcDemo/report 就可以看到我们刚才产生的报表了

报表的内容很简单,就不截图了。

原文来自:Nix.Huang的博客