JasperReports Tutorial - 7 - Integrare il report in una servlet
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.
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
<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.
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.