Jasperreports+jaspersoft studio學習教程(五)- JavaBean作為資料來源填充資料
阿新 • • 發佈:2019-02-06
在實際專案中,一般使用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並訪問