Spring MVC+Jasper Report 及生成PDF的中文问题
先说两句报表框架的选择,JasperReport和BIRT都是不错的JAVA报表工具,不过BIRT和Spring的整合比较麻烦,Spring官网论坛里有篇不错的文章,不过我觉得还是挺麻烦的。而Jasper简单一些。
?
SpringMVC和JasperReport的整合方法有很多,这里介绍一下Spring文档里的官方方法,这个方法比较简单,编写的代码很少,缺点是不自动,每加一个报表都需要修改配置文件,重启服务。对于专门做报表的WEB服务来说就不合适了。
?
1、在配置文件中增加:
?
?注意Resolver的顺序。
?
2、在classpath里面增加views.properties。我的文件放在src/main/resources下面。
views的内容是:
?
import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controller@RequestMapping("/report.html")public class ReportCtrl { private static final Logger logger = LoggerFactory.getLogger(ReportCtrl.class); @RequestMapping() public ModelAndView showReport(ModelMap model, HttpServletRequest request) { logger.info("ReportCtrl-showReport start!"); DataSource map = new DataSource(); map.setPlanno("APP1-1039-0990"); map.setPlanname("上海出租车"); List<DataSource> beanData = new ArrayList<DataSource>(); beanData.add(map); model.addAttribute("datasource", beanData); //datasource和views.properties配置的相同 logger.info("ReportCtrl-showReport end!"); return new ModelAndView("simpleReport", model); //simpleReport和views.properties配置的相同 } //bean定义 public class DataSource { private String planno = ""; private String planname = ""; public String getPlanno() { return planno; } public void setPlanno(String planno) { this.planno = planno; } public String getPlanname() { return planname; } public void setPlanname(String planname) { this.planname = planname; } }}??
运行就可以显示报表了。