2012-08-01 66 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