【问题标题】:JavaFX WebView catch post request from javascriptJavaFX WebView 捕获来自 javascript 的发布请求
【发布时间】:2014-08-28 08:52:53
【问题描述】:

我是第一次尝试 JavaFX,我对 WebView 类很感兴趣。我希望能够使用它在本地托管一个 HTML5 网站,该网站本质上是桌面应用程序的前端。

我的问题是,如果我在 webview 中从 javascript 发出 ajax 请求,有没有办法使用 JavaFX 处理该请求?该应用程序的一部分可以处理发布请求,但我想知道是否有任何内置的?

-编辑-

我的问题原本措辞不佳。我实际上想要做的是使用 WebView 创建一个类似于 QT5 提供的 HTML5 桌面应用程序。所以当我谈到 ajax 调用时,我的意思是我想以某种方式在 JS 和 JavaFX 之间架起一座桥梁。

【问题讨论】:

  • 你的浏览器能处理ajax requests吗?
  • 是的,我希望不使用浏览器并将其打包到桌面应用程序中。
  • 你想知道,如果你可以从 webview 中制作ajax requests 吗?
  • 我知道我可以从中发出 ajax 请求,我想知道 JavaFX 是否有一种简单的方法可以处理它们。基本上把它变成一个安静的服务器

标签: java javascript ajax html javafx


【解决方案1】:

你最初的问题对我来说有点不清楚,但你对你的问题的评论似乎是有道理的,所以这个答案只解决了这个问题。

我想知道 JavaFX 是否有一种简单的方法可以处理它们。基本上把它变成一个安静的服务器

大多数 Restful 服务器通过 http 运行,如果您想跟踪来自 JavaFX WebView 的 html 帖子流量,您将需要运行 http 服务器。 Java有很多restful服务器;例如jerseyrestlet。还有许多用于 Java 的通用服务器(glassfish、wildfly、jetty、tomcat 等),其中大多数都有 API,允许您将它们嵌入到其他程序中。嵌入式服务器是与您的应用程序在同一台机器上运行的 Web 服务器(因此不需要远程服务器)。这是embedded jersey server tutorial 的链接,因此您可以获得嵌入式服务器如何工作的示例。

选择合适的服务器,将其嵌入到您的 JavaFX 应用程序中,并使用它来提供 JavaFX WebView 使用的 HTML 页面。服务器还可以从 WebView 提供的 HTML 响应 http get 和 form post 命令。

通过将嵌入式服务器与您的应用程序打包成一个独立的应用程序,用户可以从一个包含 Java 运行时、嵌入式服务器和您的应用程序服务器的安装程序包安装您的软件 - 所以他们运行所需的一切您的应用在本地位于一个完全独立的包中。

【讨论】:

    【解决方案2】:

    您误解了 JavaFX 及其 webView 的全部意义。

    JavaFX 用于创建将在客户端计算机上运行的客户端应用程序。将服务器附加到您的应用程序利用 Client-Server architecture 的唯一目的

    WebView(来自文档)

    此 Web 引擎组件基于 WebKit,它是一个开源的网络浏览器引擎,支持 HTML5、CSS、JavaScript、DOM 和 SVG。它使开发人员能够 在他们的 Java 应用程序中实现以下功能:

    • 从本地或远程 URL 呈现 HTML 内容

    • 支持历史记录并提供后退和前进导航

    • 重新加载内容

    • 将效果应用到 Web 组件

    • 编辑 HTML 内容

    • 执行 JavaScript 命令

    • 处理事件

    WebView 就像我们使用的任何其他浏览器一样。如上所述,它由 WEBKIT 提供支持。不过,它通过 JavaFX 在 JVM 上运行。

    JavaFX 通常用于创建客户端应用程序。虽然,java提供了设计服务器的方法。

    考虑以下几点:

    • 对于简单的客户端-服务器架构,您可以查看Sockets
    • 要创建更复杂的 Web 应用程序,您需要考虑使用 Java Servlets 创建 Web 应用程序。这些 java 程序需要Appication Server/Container 才能执行。 支持 SOAP/RESTFUL 网络服务
    • 如果您希望将服务器与 javafx 应用程序一起发布,您可以使用嵌入式服务器。例如Jetty Embedded Server

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      相关资源
      最近更新 更多