在Tomcat上运行JasperViewer作为Web应用程序的一部分

时间:2013-12-30 13:44:42

标签: java swing jasper-reports

我了解到 JasperViewer JasperReports 的默认预览组件)是一个 Swing 组件,所以有什么方法可以转换或嵌入它在Web应用程序中?有人说我应该使用 Java Web Start ,但是从我从this link JWS 学到的知识对于在客户机上下载和安装应用程序很有用。不是我们的情况。其他工作可能有用(可能只是在理论上)将 jFrame 转换为 jApplet ,如简要描述in this link

  1. 您是否尝试过这些解决方案并且有效吗?
  2. 您是否知道此问题的其他任何解决方案?

1 个答案:

答案 0 :(得分:2)

如果您知道如何生成报告,则可以在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