Tôi mới đến JasperReports
và không biết cách gọi tệp jasper từ servlet. Báo cáo của tôi chứa biểu đồ hình tròn.JasperReports: Gọi báo cáo từ servlet
6
A
Trả lời
1
Đây là báo cáo giả được tạo trong tệp Servlet.
Giống như trong lớp Java bình thường.
Chỉ cần đảm bảo bạn có hàng nhập cho các lớp báo cáo jasper ở đầu tệp.
Ví dụ dưới đây xây dựng báo cáo từ nguồn dữ liệu XML.
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
Bạn có thể chuẩn bị tệp Jasper và truyền trực tuyến cho khách hàng.
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
Một cách hoàn chỉnh để làm điều này từ servlet sẽ là:
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);
}
Các vấn đề liên quan
- 1. Gọi Servlet Post từ một Servlet khác
- 2. Gọi Java servlet từ Android
- 3. Cách gọi hàm JavaScript từ servlet
- 4. JasperReports giải pháp thích hợp để hiển thị báo cáo trong một ứng dụng web?
- 5. Cách gọi một servlet từ mã Java
- 6. Cách gọi lớp servlet từ dạng HTML
- 7. Tạo báo cáo từ Dynamodb
- 8. Báo cáo lỗi JBoss: Trạng thái HTTP 404 - Servlet không khả dụng
- 9. báo cáo jasper trong grails
- 10. Xuất kết quả truy vấn JasperReports
- 11. Gọi lỗi jQuery ajax callback từ bên trong servlet
- 12. JasperReports Font mặc định
- 13. Báo cáo Jasper Đầu ra Excel
- 14. Nhận báo cáo tối ưu từ GCC
- 15. Chạy báo cáo trên JasperServer từ C#
- 16. Alternatives để JasperReports và BIRT
- 17. cách mở báo cáo ssrs từ trang web asp bằng trình xem báo cáo
- 18. Báo cáo dịch vụ báo cáo Thời gian chờ
- 19. Báo cáo Crystal "Tải báo cáo không thành công" lỗi chạy báo cáo trên máy chủ
- 20. Gọi một dịch vụ web bên ngoài từ một servlet
- 21. Cách lên lịch báo cáo với thông số loại bộ sưu tập qua REST API trong Máy chủ JasperReports?
- 22. Lỗi báo cáo từ Ajax đã gọi các phương thức PartialView trong MVC
- 23. Báo cáo lỗi báo cáo chuẩn bị MySQLi
- 24. Báo cáo tinh thể XI treo khi mở báo cáo
- 25. Chuyển đổi Báo cáo Oracle (.rdf) sang báo cáo BIRT
- 26. Báo cáo tải báo cáo CrystalReport không thành công
- 27. C# Kiểm soát Báo cáo (Báo cáo Tương tác)
- 28. Có thể thực hiện cuộc gọi dịch vụ web trong báo cáo dịch vụ báo cáo không?
- 29. Báo cáo Jasper: các báo cáo phụ đang gây ra vòng lặp vô hạn
- 30. SWIG: Báo cáo ngoại lệ Python từ mã C++
Hiệu suất có thể được cải thiện bằng cách điền vào file '.jasper' thay vì biên soạn báo cáo ở mỗi yêu cầu. –