Jasperreports+jaspersoft studio学习教程(五)- JavaBean作为数据源填充数据


 在实际项目中,一般使用java对象作为数据源的方式更多,这种方式会更加灵活多变。对于mvc结构更为契合。上面介绍了用JDBC数据源时,用到了Fields对象。本篇主要是使用Fileds对象来匹配JavaBean对象。


5.1 在项目中新建user对象(添加get,set方法),结构如下:




5.2 新建报表模板DemoReport4.jrxml

5.2.1按照user对象新建Fileds(注意数据类型一致)




5.2.2 去掉多余的band,只保留Title,Detail,PageFooter。去掉band的前后距,步骤:模板(DemoReport4)右键 -> Show Propertes -> Page Format -> Edit Page Format




5.2.3 将Filed拖动到 Detail 1 Band。并设计模板,保持Filed的高与Detail Band的高一致




设置页码,打开组件面板 在Composite Elements栏找到Page Number 拖入到 Page Footer 中




保存,并将jrxml文件放入到项目webroot下新建的jrxml目录中。


5.3 编写servlet注入JavaBean数据源。新建JasperServlet3




5.3.1 JasperServlet3的doget如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Map<String,Object> parameters = new HashMap<String,Object>(16);
		
		String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport4.jrxml";
		//由jrxml文件编译后生产jasper文件的路径
		String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport4.jasper";
		
		FileInputStream isRef = null;
		ServletOutputStream sosRef = null;
		
		try {
			//编译jrxml生产jasper文件
			JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
			
			isRef = new FileInputStream(new File(jasperPath));
			sosRef = response.getOutputStream();
			//组装list数据源
			List<User> list = new ArrayList<User>();
			for(int i = 1; i <= 100; i++) {
				User user = new User(i,"小明"+i,18,i);
				list.add(user);
			}
			
			//new JRBeanCollectionDataSource(list)  以javaBean为数据源注入报表数据
			JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(list));
			response.setContentType("application/pdf");
		} catch (JRException e) {
			
			e.printStackTrace();
		}finally {
			sosRef.flush();
			sosRef.close();
		}
	}


5.3.2 启动tomcat并访问





  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值