【问题标题】:Open PDF file on client's browser directly from Java Servlet Class直接从 Java Servlet 类在客户端浏览器上打开 PDF 文件
【发布时间】:2011-07-01 06:08:54
【问题描述】:

大家好,下面是概要:

基本上,我想要的是:PL/SQL 过程调用(使用 UTL_HTTP)--> Java Web 应用程序,Servlet --> 打开浏览器窗口并呈现 PDF。

为此,我们在 PL/SQL 过程中使用包 UTL_HTTP,因为它可以选择通过 POST 方法向外部 url 发送请求。我们使用这个包的唯一原因是确保我们的数据作为 POST 参数传递(显然,在通过 POST 方法传递参数时,没有其他方法可以直接从 PL/SQL 过程打开外部站点)。还有其他方法可以直接提供 url 并将 get 参数作为请求 url 字符串的一部分传递,但这会暴露用户名、密码、序列号等敏感参数。

这个来自 PL/SQL 过程的 http 请求被我们的 Java Web 应用程序中的一个 servlet 截获。我们的 Java Web 应用程序是一个文档管理应用程序,它处理所有的文档管理逻辑。

我们设法访问了 servlet,还获得了 PDF 并将其放入响应中。

这里有一个问题:由于原始应用程序是一个 PL/SQL 过程,它将 HTTP 请求直接发送到我们的 Web 应用程序,因此在任何时候都不会打开浏览器窗口。因此,在我们的 Java servlet 类中,我们获取 PDF 并将其写入响应中。但是我们需要生成一个浏览器窗口来呈现 pdf。我发现this neat site 提供了Java 代码,可以直接从Java 类打开浏览器窗口。但问题是浏览器窗口直接在服务器而不是在客户端打开。这个浏览器窗口应该在我们的客户端机器上打开,而不是在服务器上发出 http 请求。

有什么建议吗?

干杯

【问题讨论】:

  • 所以你的具体问题更多:“如何使用 PL/SQL 过程调用打开一个新的浏览器窗口?”。显然是客户直接调用的那个。
  • 在我看来,您可能必须从另一端开始。打开网络浏览器,然后发送请求并等待来自服务器的响应(pdf)。您能否详细描述一下您是如何发送请求的?
  • 我认为您不了解 HTTP 的请求/响应模型。 en.wikipedia.org/wiki/HTTP
  • @BalusC:实际上“我如何使用 PL/SQL 过程调用和 UTL_HTTP 包打开一个新的浏览器窗口”。可以通过其他包在新浏览器中简单地打开一个 url。就像我说的,虽然 UTL_HTTP 是唯一允许 POST 参数传递的。
  • 您确实必须触发 HTTP 请求。让客户端调用 servlet。让 servlet 调用存储过程。让 servlet 返回它的结果。

标签: java servlets plsql pdf-generation


【解决方案1】:

如果您使用的是 PL/SQL Web 应用程序(使用 APEX 或 webToolkit),您可以将您从对 servlet 的 UTL_HTTP 调用中获得的 blob 发送到浏览器

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 2019-01-04
    • 1970-01-01
    • 2013-07-09
    • 2023-03-31
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多