Nell’articolo di oggi vedremo come rendere disponibile il report all’interno di una web application. Il report sarà aperto invocando una url particolare e reso disponibile direttamente nel browser.
Primo passo: creare la web application.
Per fare questo ci avvaliamo di maven e uno dei suoi archetipi.
1 2 3 4 |
mvn archetype:create -DgroupId=it.finazzo.web -DartifactId=ReportJasperWeb -DarchetypeArtifactId=maven-archetype-webapp |
Creato il progetto possiamo importarlo in eclipse tramite la direttiva mvn eclipse:eclipse.
Secondo Passo: definire la servlet per l’export
A questo punto dichiaramo la servlet che si preoccuperà di esportare il report in formato pdf. Definiamo nel file web.xml la servlet e l’url pattern che la attiva
1 2 3 4 5 6 7 8 9 |
<servlet> <servlet-name>Manager</servlet-name> <servlet-class>it.finazzo.servlet.Manager</servlet-class> </servlet> <servlet-mapping> <servlet-name>Manager</servlet-name> <url-pattern>/manager</url-pattern> </servlet-mapping> </web-app> |
Terzo Passo: implementare la funzione di export.
1 2 3 4 5 6 7 8 |
JRDataSource ds = new it.finazzo.ds.DataSource(); String reportFileName = getServletContext().getRealPath("WEB-INF/classes/reportFromXml.jrxml"); JasperReport jasperReport = null; jasperReport = JasperCompileManager.compileReport(reportFileName); JasperPrint jasperPrint = null; jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), ds ); JasperExportManager.exportReportToPdfStream(jasperPrint, resp.getOutputStream()); |
Recuperiamo il file jrxml dal classpath e usiamo il metodo per esportare il report direttamente nell’output stream della response, con l’effetto di aprire il file direttamente nel browser quando invochiamo l’url http://localhost:9000/Report/manager
Qui sono disponibili i sorgenti per provare in locale.