JasperReports: How to call the report in jsp page

前端 未结 6 619
迷失自我
迷失自我 2020-11-27 21:02

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 strut

6条回答
  •  时光说笑
    2020-11-27 21:52

    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();
      

提交回复
热议问题