Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JasperReports: How to call the report in jsp page

I made one jasper report using iReport 3.7.4 version, now i have to use that or call that report in my java application where i am using servlets, jsp and struts framework, apache tomcat as server.

I want steps regarding how to call the jasper report with some example.

like image 517
krishna Avatar asked Sep 19 '10 17:09

krishna


People also ask

How do I run Jasper report in Jasper studio?

To run a report on the server: 1. Once you have a connection to your server Connecting to JasperReports Server, navigate to your report's JRXML, and click Run Report Unit. If prompted to save the report unit, specify a location on your local computer and click OK.


2 Answers

  1. Compile the report in iReport
  2. Place the compiled report on the classpath
  3. load it with

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
    
  4. Fill it with data. dataSource is the DataSource instance you have - for example a BeanCollectionDataSource

    JasperPrint jasperPrint = 
         JasperFillManager.fillReport(jasperReport, params, dataSource);
    
  5. Export it

    JRPdfExporter exporter = new JRPdfExporter();
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
    exporter.exportReport();
    
  6. The outputStream above may be either a response.getOutputStream() or a FileOutputStream(), depending on whether you want to send it to a client or you want to store it as a file. If you want to send it to the client, you'd have to send the Content-Disposition header, and some more, but that depends on the format you want to save to. In case you want to print on the client, it's quite a different question - you'd need some client-side code, an applet, for example.

like image 62
Bozho Avatar answered Oct 12 '22 13:10

Bozho


After 6 years @Bozho answer now (v5 and v6) contains deprecated code on point 5 JRExporterParameter.OUTPUT_STREAM, but I will try to improve the other points while I'm at it

  1. Load the report

    compiled version .jasper

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
    

    or the non compiled version .jrxml (slower since need to compile but feasible)

    JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml");
    
  2. Fill the report

    with nothing (datasource generated inside report or just static text)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);
    

    with datasource:

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
    

    with database connection (may the most common, sql executed inside report)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);
    
  3. Export report

    JRPdfExporter exporter = new JRPdfExporter()
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
    SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
    configuration.setMetadataAuthor("Petter"); //Set your pdf configurations, 
    exporter.setConfiguration(configuration);
    exporter.exportReport();
    
  4. If you like to stream the report directly to web page this is how contentType and Content-disposition is set and how you retrieve the outputStream

    response.setContentType("application/x-pdf");
    response.setHeader("Content-disposition", "inline; filename=myReport.pdf");
    OutputStream outputStream = response.getOutputStream();
    
like image 26
Petter Friberg Avatar answered Oct 12 '22 15:10

Petter Friberg