2014-08-27 36 views
0

我正在第一次嘗試JavaFX,並且我對WebView類感興趣。我希望能夠使用它來本地託管一個基本上是桌面應用程序前端的HTML5網站。JavaFX WebView捕獲來自javascript的帖子請求

我的問題是,如果我在webview中從javascript發出ajax請求,有沒有辦法用JavaFX處理該請求?部分應用程序可以處理髮布請求,但我想知道是否有內置任何東西?

CNC中

我的問題最初是措辭很差。我基本上試圖做的是使用WebView創建一個類似於QT5提供的HTML5桌面應用程序。所以當我談論ajax調用時,我的意思是我想以某種方式在JS和JavaFX之間架起一座橋樑。

+0

你的**瀏覽器**可以處理'ajax requests'嗎? – ItachiUchiha 2014-08-27 21:13:43

+0

是的,我希望不使用瀏覽器並將其打包到桌面應用程序中。 – tier1 2014-08-27 21:19:47

+0

你想知道,如果你可以從webview做'ajax requests'嗎? – ItachiUchiha 2014-08-27 21:21:07

回答

0

你誤以爲JavaFX及其webView是什麼。

JavaFX用於創建客戶端應用程序,客戶端應用程序將在客戶端機器上運行。連接服務器到應用程序利用Client-Server architecture

的WebView的唯一目的(從文檔)

此Web引擎組件,基於 WebKit的,這是一個開源Web瀏覽器引擎,支持 HTML5,CSS,JavaScript,DOM和SVG。它允許開發人員 實現以下功能在他們的Java應用程序:

  • 從本地或遠程URL渲染HTML內容

  • 支持歷史記錄,並提供後退和前進導航

  • 刷新內容

  • 將效果應用到網絡組件

  • 編輯HTML內容

  • 執行JavaScript命令

  • 處理事件

的的WebView就像我們使用任何其他瀏覽器。如上所述,它由WEBKIT提供支持。不過,它通過JavaFX在JVM上運行。

JavaFX通常用於創建客戶端應用程序。雖然,java提供了設計服務器的方法。

考慮以下幾點:

  • 對於一個簡單的客戶端 - 服務器架構,你可以看看Sockets
  • 要創建更復雜的Web應用程序,你需要考慮創建一個使用Java Servlets Web應用程序。這些java程序需要執行一個Appication Server/Container支持SOAP/RESTFUL網絡服務
  • 如果您想用javafx應用程序發佈服務器,則可以使用嵌入式服務器。例如Jetty Embedded Server
1

您的原始問題對我來說有點不清楚,但您對您的問題的評論似乎有意義,所以此答案僅解決此問題。

我想知道JavaFX是否有一種簡單的方法可以處理它們。基本上把它變成一個寧靜的服務器

最寧靜的服務器上運行在HTTP上,如果你想從一個JavaFX的WebView跟蹤HTML後的流量,你需要運行一個HTTP服務器。 Java有許多寧靜的服務器;例如jerseyrestlet。還有很多用於Java的通用服務器(glassfish,wildfly,jetty,tomcat等),其中大多數API都允許您將它們嵌入到其他程序中。嵌入式服務器是與應用程序在同一臺計算機上運行的Web服務器(因此不需要遠程服務器)。這裏是一個embedded jersey server tutorial的鏈接,所以你可以得到一個嵌入式服務器如何工作的例子。

選擇一個合適的服務器,將其嵌入到您的JavaFX應用程序中,並用它來提供JavaFX WebView所使用的HTML頁面。服務器還可以響應來自WebView提供的HTML的http get和form post命令。

通過將嵌入式服務器與應用程序打包爲一個獨立的應用程序,用戶可以從一個包含java運行時,嵌入式服務器和應用程序服務器的安裝程序包中安裝軟件 - 所需的一切在完全自包含的軟件包中本地運行您的應用程序。