【发布时间】: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 移动应用程序应用程序并从那里访问报告。
这将涉及以下内容:
- 用户登录 Jasper
- 用户选择报告
- Jasper 使用某些参数调用我的应用程序
- 应用程序创建 xml 文件
- 应用程序返回此文件的链接
- Jasper 展示报告
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: java jsp jasper-reports jasperserver