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.

Prossimo