2012-08-01 29 views
0

我正在用GWT創建一個Web用戶界面,它必須「覆蓋」現有Web平臺的UI(我無法控制原始UI,但我可以同一臺服務器)。所以,我提出了這個請求,我從舊UI獲得了HTML,而不是我需要解析HTML並選擇我需要在我的UI中呈現的信息。做最後一步的最好方法是什麼(從HTML解析和提取信息)?GWT - 如何管理從服務器獲取的HTML

回答

1

不要在GWT客戶端上解析HTML。

您需要設置代理servlet。代理servlet代表GWT客戶端訪問傳統(舊)HTML應用程序。代理也充當GWT客戶端的主要servlet。

PROCES流動

  1. 應用程序上下文服務於GWT應用到瀏覽器。

  2. 應用程序上下文準備服務偵聽器/遺留。

  3. GWT應用程序運行在瀏覽器的可用部件上。

  4. GWT應用程序向/ legacy/Patient/476854發送數據請求。

  5. 代理/服務的servlet響應請求/傳統/人/ 476854

  6. 代理/服務的servlet決定從哪裏得到的數據。

  7. 代理/服務的servlet決定大部分數據來自傳統的病人信息的應用程序//你好:8888個//聖誕老人病人= 476854。

  8. 代理/服務的servlet打完一個HTTP請求//你好:8888個//聖誕老人患者= 476854。

  9. 代理/服務servlet接收從//你好響應:8888 //聖誕老人患者= 476854?。分析並按摩迴應。用更多東西來修飾迴應。將整個響應編碼爲JSON(或將信息封裝爲RPC POJO)並將其作爲響應發送給GWT客戶端。

  10. GWT客戶端請求觸發回調,並表現爲有派了REST或RPC請求,並得到了一個迴應任何GWT客戶端。解釋數據並將其顯示在它準備的小部件上。

什麼是代理servlet?

我描述的代理servlet不是通常的HTTP代理。相反,它是提供REST或RPC服務的普通servlet。我將它稱爲代理,因爲它是允許http客戶端訪問不啓用http的遺留/中間件應用程序的代理。

該servlet接受http請求並將其轉換爲傳統應用程序的調用。通常,它可能涉及編寫終端仿真程序,因爲許多舊版應用程序都是用舊VMS,IBM VM或甚至Sperry/Unisys編寫的,應用程序只接受終端輸入。有終端仿真庫。

幸運的是,您的服務不需要執行終端emu,只是將一個http請求轉換爲另一個。

我建議使用JAX-RS(RestEasy或Jersey)作爲REST監聽器servlet,它監聽與您聲明的服務接口相對應的任何http請求。監聽器將自發地觸發接口的實現。接口impl將包含觸發/調用/撥入舊版應用程序並將其數據轉換爲響應的例程。

對於帶有GWT的JAX-RS,請閱讀http://h2g2java.blessedgeek.com/2011/12/gwt-with-jax-rs-aka-rpcrest-part-1.html

+0

關於如何實現這個代理servlet的任何建議?其實我在Apache服務器上工作:舊的應用程序基於Wordpress。創建一個用PHP編寫的服務而不是Java servlet是合理的,或者更方便創建Java servlet? – tonidi 2012-08-02 08:31:02