2010-03-08 10 views
6

gelen arama raporu ben JasperReports yeniyim ve servlet gelen Jasper dosyasını çağırmak için nasıl bilmiyorum. Raporum pasta grafiğini içeriyor.JasperReports: servlet

cevap

1

Bir Servlet dosyası içinde oluşturulan bir sahte rapor İşte.

Normal Java sınıfında olduğu gibi aynıdır.

Sadece dosyanın en üstünde Jasper raporu sınıfları için ithalatı olduğundan emin olun.

feryat örnek bir XML veri kaynağı bir rapor oluşturur.

public class JasperServlet extends HttpServlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse res) 
      throws ServletException, IOException { 
     try { 
      String reportFile = "myJasperReport.jrxml"; 
      File outputFile = new File("Report.pdf"); 
      HashMap hm = new HashMap(); 

      DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory 
        .newInstance(); 
      DocumentBuilder documentBuilder = documentBuilderFactory 
        .newDocumentBuilder(); 
      Document document = documentBuilder.parse(new File("myXml.xml")); 

      // Compile the report 
      JasperReport report = JasperCompileManager 
        .compileReport(reportFile); 
      JRXmlDataSource xml = new JRXmlDataSource(document, "/xml/root"); 
      // Fill the report 
      JasperPrint print = JasperFillManager.fillReport(report, hm, xml); 
      // Create an Exporter 
      JRExporter exporter = new JRPdfExporter(); 
      exporter.setParameter(JRExporterParameter.OUTPUT_FILE, outputFile); 
      exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); 
      // Export the file 
      exporter.exportReport(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
5

Jasper dosyasını hazırlayabilir ve istemciye aktarabilirsiniz.

bytes[] byteStream = JasperRunManager.runReportToPdf("myJasperReport.jasper",paramMap,databaseConn); 

OutputStream outStream = servletResponse.getOutputStream(); 
response.setHeader("Content-Disposition","inline, filename=myReport.pdf"); 
response.setContentType("application/pdf"); 
response.setContentLength(byteStream.length); 
outStream.write(bytes,0,bytes.length); 
3

olacağını servlet gelen Bunu yapmanın tam yol:

public void myServletMethod(HttpServletRequest request, HttpServletResponse response) throws IOException{ 
      JasperReport jasperReport = null; 
      JasperDesign jasperDesign = null; 
      Map parameters = new HashMap(); 
      String path = getServletContext().getRealPath("/WEB-INF/"); 
      jasperDesign = JRXmlLoader.load(path+"/relative/path/to/MyReport.jrxml"); 
      jasperReport = JasperCompileManager.compileReport(jasperDesign); 
      byte[] byteStream = JasperRunManager.runReportToPdf(jasperReport, parameters, **new DataSourceOfYourPreference**);        
      OutputStream outStream = response.getOutputStream(); 
      response.setHeader("Content-Disposition","inline, filename=myReport.pdf"); 
      response.setContentType("application/pdf"); 
      response.setContentLength(byteStream.length); 
      outStream.write(byteStream,0,byteStream.length);  

    } 
+0

Performans '.jasper' dosyasını doldurma yerine her isteği üzerine rapor derlenerek geliştirilebilir. –