【问题标题】:Communication between Jasper and a different applicationJasper 与不同应用程序之间的通信
【发布时间】:2025-12-07 09:30:01
【问题描述】:

我有 Jasper Reports Server(安装在 www.example.com)和一个单独的 Java/JSP 应用程序(安装在 www.example.net),我正在寻求不同的选项来生成报告。

选项 1(当前工作解决方案)

我当前的工作解决方案是用户登录到 Java/JSP 应用程序,然后选择一个报告。应用程序创建报告的 XML 表示,将其保存为 fileNameXML,然后使用如下代码将其发送到 Jasper Reports Server:

     <IFRAME height="600" width="1000" src="https://www.example.com/jasperserver/flow.html?
    _flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&
    ParentFolderUri=%2Freports&
    reportUnit=%2Freports%2FExample_Report_2&j_username=user&
    j_password=password&
net.sf.jasperreports.xml.source=https://www.example.net/<%=fileNameXML%>">                              
     </IFRAME>

(请注意,即使我在 URL 中传递了用户名和密码,安全性也不会受到影响,因为 filenameXML 是使用 String fileName = UUID.randomUUID().toString() + fileExt; 创建的)

选项 2

我将 Jasper Reports 服务器直接连接到 www.example.net 上的 SQL Server 数据库,并以这种方式生成报告。这种方法的缺点是 (a) 我需要在 Jasper Reports 中设置所有用户 (b) 我需要以安全意识的方式传递参数,以便每个用户只能访问自己的数据 (c)我只能访问数据库,不能访问我的应用程序的计算

我的理想解决方案

但是,我真的希望能够通过 Jasper 访问我的应用程序的计算,并绕过登录到我的应用程序。

这样做的一个好处是,我的应用程序还没有适当的移动访问权限,用户可以下载 Jasper 移动应用程序应用程序并从那里访问报告。

这将涉及以下内容:

  1. 用户登录 Jasper
  2. 用户选择报告
  3. Jasper 使用某些参数调用我的应用程序
  4. 应用程序创建 xml 文件
  5. 应用程序返回此文件的链接
  6. Jasper 展示报告

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: java jsp jasper-reports jasperserver


    【解决方案1】:

    我认为最好的方法是:

    • 在您的应用中创建一个可随时访问且无需登录的 URL。如果您使用的是 Spring 或任何其他框架,请说明这很好,因为我可以向您展示如何执行此操作。

    有很多方法可以给这只猫剥皮。让我知道您正在使用什么技术,也许我们可以从那里开始。我们已经实现了您现在的要求。

    谢谢。

    【讨论】:

    • 您如何处理您的登录/会话跟踪?同样,这个概念,因为它是一个概念,所以是模糊的。你在问一个解决问题的方法,这就是我试图弄清楚它是否适合你。如果我要实现这一点,请使用 Spring。我有一个拦截器来检查进入我的应用程序的 URL 请求。如果我点击一个特定的 URL,比如“myApp/getCalculations”,我会绕过登录/会话检查功能,并可能通过序列化对象、字符串、json 等向请求者提供它需要的所有信息(无论请求者理解什么) )。干杯!
    • 感谢您的回复。假设我创建了一个执行计算的 URL(并按照您的建议绕过登录),您会建议 jasper 如何与该 URL 通信。具体来说,它将如何调用它,以及它将如何接收此 URL 将产生的 XML 数据?
    最近更新 更多