我了解到JasperViewer(JasperReports的默认预览组件)是一个Swing组件,那么有什么方法可以将其转换或嵌入到Web应用程序中?有人说我应该使用Java Web Start,但是从this link JWS中学到的知识,JWS对于在客户端计算机上下载和安装应用程序很有用,但这不是我们的情况。其他可能可行的工作(也许只是在理论上)是将jFrame转换为jApplet,如in this link所述
最佳答案
如果您知道如何生成报告,则可以轻松地在servlet内完成报告,并将生成的文件发送到客户端。使用JWS应用程序或Applet很有可能意味着该报告是在客户端生成的,并且原始数据以及所有依赖项也可供客户端使用。
以下代码假设您正在生成PDF文件
public class ReportServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
// initialize your report objects here
JasperReport jasperReport =
JasperPrint print =
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, resp.getOutputStream());
resp.setContentType("application/pdf");
exporter.exportReport();
} catch (Exception e) {
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error generating report : " + e.getClass() + " " + e.getMessage());
}
}
您可以通过设置正确的内容类型并使用匹配的JRXYZExporter(JRHtmlExporter,JExcelApiExporter等)来扩展上面的示例以支持多种导出格式。
如果您需要更多可定制的内容,则可能还需要研究Jasper Server