使用 Google Web Toolkit 和 JSON开发Ajax应用程序
http://tech.ddvip.com 2007年08月25日 社区交流
内容摘要:本文介绍如何使用 Google Web Toolkit(GWT) 和 JSON 开发一个示例 Ajax 应用程序。作者将分别介绍如何在客户端使用 GWT 的 JSON API 来解析和生成 JSON 编码的数据,以及如何在服务器端使用 GWT 的 RemoteServiceServlet 来接受和回复来自客户端的请求,并使用 SOJO 来解析处理 JSON 数据。
GWT RemoteServiceServlet
介绍
GWT 提供的为实现服务器端远程调用服务而提供的 servlet 基类。RemoteServiceServlet 能够自动的反序列化客户端发送的请求信息,也可以序列化返回信息。示例程序中,我们使用 RunTestServlet 来继承 RemoteServiceServlet。
Servlet 配置在 GWT 项目中的配置。
在 GWT 项目中,如果需要配置 servlet 映射,在 Module 的配置文件中添加该 servlet 的声明。以示例程序为例,在 src/unitTest/MainApplication.gwt.xml 中添加 <servlet class='unitTest.server.RunTestServlet' path='/runTest'/>。
重载 String processCall(String payLoad)实现业务逻辑
用 RunTestServlet 继承 RemoteServiceServlet,并重载 processCall 方法。在 processCall 方法里可以得到当前客户端的请求信息。读取参数 payLoad 里可以得到请求信息文本。当一系列业务处理以后,服务器端返回一个字符串作为此次请求的返回信息。以示例程序为例,服务器端接收到的 payLoad 是:{"caseNum":"3", "testSuites":["TestSuite2","TestSuite3","TestSuite5"]} 。返回的信息为: [{"start":"Fri Jul 13 11:09:55 CST 2007","name":"TestSuite2-case-0","~unique-id~":"0","result":"FAIL","end":"Fri Jul 13 11:09:56 CST 2007","class":"unitTest.entity.TestResult"}] 。清单 11 给出了服务器端 processCall 方法实现代码。
清单 11. RunTestServlet 的 processCall 方法public String processCall(String payLoad) {
System.out.println("Received payLoad:" + payLoad);
Object result = "";
if (!payLoad.startsWith("getRuntimeResults")) {
//parse the request JSON string into javabean requestForm
RequestForm requestForm = (RequestForm) serializer.deserialize(
payLoad, RequestForm.class);
//start a test runner to simulate the unit test
testRunner = new TestRunner();
testRunner.init(requestForm.getCaseNum(), requestForm
.getTestSuites());
testRunner.start();
}
//get runtime results
if (testRunner != null) {
List results = testRunner.getTestResults();
//transform list of javabeans into JSON string
result = serializer.serialize(results.toArray());
}
System.out.println("Return Result:" + result.toString());
return result.toString();
}示例运行结果
选择要运行的 TestSuite,并输入每个 TestSuite 所需要运行的 TestCase 的数目。填写 TestCase Num 为 3,运行的 TestSuite 选择 TestSuite2, TestSuite3, TestSuite5。如 图 2 所示。
图 2. 初始界面
让服务器端运行测试。点击”Run Test”。
浏览器页面将动态显示服务器端测试的结果。当服务器端有 TestCase 被执行完毕,页面会实时展现目前已经执行完毕的 TestCase 的测试结果。如 图 3 所示。
图 3. 最新完成的测试结果实时显示在页面上
当测试结束时,启动按钮和状态恢复到初始状态。如 图 4。
图 4. 完成测试
结束语
本文介绍了如何使用 GWT 和 JSON 来开发 Ajax 应用程序。并分别介绍了如何在客户端使用 GWT 的 JSON API 来解析和生成 JSON 编码的数据。在服务器端,如何使用 GWT 的 RemoteServiceServlet 来接受和回复来自客户端的请求,以及如何使用 SOJO 来解析处理 JSON 数据。
来源:ibm 作者:邹林志 责编:豆豆技术应用