直接从 Java Servlet 类在客户端浏览器上打开 PDF 文件
嘿伙计们,这就是概要:
本质上,我想要的是:PL/SQL 过程调用(使用 UTL_HTTP)--> Java Web 应用程序、Servlet -->打开浏览器窗口并呈现 PDF。
为此,我们在 PL/SQL 过程中使用 UTL_HTTP 包,因为它可以选择通过 POST 方法向外部 URL 发送请求。我们使用这个包的唯一原因是确保我们的数据作为 POST 参数传递(显然,在通过 POST 方法传递参数时,没有其他方法可以直接从 PL/SQL 过程打开外部站点)。还有其他方法可以直接提供 url 并将 get 参数作为请求 url 字符串的一部分传递,但这会暴露敏感参数,例如用户名、密码、序列号等。
来自 PL/SQL 过程的此 http 请求被 servlet 拦截我们的 Java Web 应用程序。我们的 Java Web 应用程序是一个文档管理应用程序,处理所有文档管理逻辑。
我们设法访问 servlet,并获取 PDF 并将其放入响应中。
问题是:由于原始应用程序是一个 PL/SQL 过程,它将 HTTP 请求直接发送到我们的 Web 应用程序,因此浏览器窗口在任何时候都不会打开。因此,在我们的 Java servlet 类中,我们获取 PDF 并将其写入响应中。但我们需要生成一个浏览器窗口来渲染 pdf。我发现这个简洁的网站提供了Java直接从 java 类打开浏览器窗口的代码。但问题是浏览器窗口直接在服务器上打开,而不是在客户端上打开。该浏览器窗口应该在我们发出 http 请求的客户端计算机上打开,而不是在服务器上打开。
有什么建议吗?
干杯
Hey Folks, So this is the rundown:
Essentially, what I want: PL/SQL Procedure call(using UTL_HTTP) --> Java Web Application, Servlet --> opens up a browser window and renders a PDF.
We use the package UTL_HTTP within our PL/SQL Procedure for this, as it has an option to send requests to external urls via the POST method. The only reason we use this package is to ensure our data is passed as POST parameters (apparently, there is no other way to open up external sites directly from PL/SQL procedures while passing parameters through the POST method). There are other means to provide urls directly and pass get parameters as part of the request url string, but this would expose sensitive parameters like username, password, serial id etc.
This http request from the PL/SQL procedure is intercepted by a servlet in our Java Web Application. Our Java Web Application is a Document Management Application and handles all the document management logic.
We managed to reach the servlet and also get a hold of the PDF and put it in the response.
Here's the catch: Since the originating application was a PL/SQL Procedure that sends the HTTP request directly to our Web Application, at no point is a browser window opened. So in our Java servlet class, we get hold of the PDF and write it onto the response. But we need to spawn a browser window to render the pdf. I found this neat site that provides Java Code to open up a browser window directly from a java class. But the problem is that the browser window opens up at the server directly and not on the client.This browser window ought to open up in our client machine from where the http request was issued not at the server.
Any suggestions?
Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用 PL/SQL Web 应用程序(使用 APEX 或 webToolkit),您可以将从对 servlet 的 UTL_HTTP 调用中获取的 blob 发送到浏览器
If you are using an PL/SQL Web aplication (using APEX or webToolkit) you can send to the browser the blob that you get from the UTL_HTTP call to the servlet