1. 程式人生 > >Jasperreports+jaspersoft studio學習教程(五)- JavaBean作為資料來源填充資料

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並訪問