web └report └template.jrxml └template.jasper使用i-Report編寫jrxml檔、並直接用i-Report編譯產生jasper檔。
使用servletContext取得jasper檔之路徑:
String jasperPath =servletContext.getRealPath("/report/template.jasper");
ServletContext的取得依所使用的web framework而有所不同。以JSF來說,servletContext的取得如下:
ServletContext servletContext=(ServletContext)FacesContext.getCurrentInstance(). getExternalContext().getContext();
接下來產生byte[]串流:
JasperFillManager.fillReportToFile(jasperPath, parameter,conn);
byte[] bytes = JasperRunManager.runReportToPdf(jasperPath, parameter, conn);
之所以要產生byte[]是因為它轉成Stream或是File都很方便。JasperRunManager也提供了很多不同型態+報表類型的回傳值。(詳見API..)。
接下來由HttpResponse取得outputStream並寫出
response.getOutputStream().write(bytes);