五、 巧妙的服务机制
在Ajax应用程序中使用RPC可以消除显式地处理XMLHttpRequest和相关的服务器返回值的必要性,因为GWT对象能够为你处理复杂任务。
你的应用程序定义的每个服务都要求实现两个Java接口和一个Java类。为了编译这些类,你必须确保gwt-user.jar库位于你的classpath(由一个Ant文件入口负责实现这项任务)中。下列代码示例展示了定义我们的服务的Java接口。
| package com.parkerriver.gwt.testapp.client; import com.google.gwt.user.client.rpc.RemoteService; public interface ShowRespService extends RemoteService{ String displayResponse(String req); } |
这个服务接口要求扩展GWT接口RemoteService。它定义了单个方法displayResponse()。
另外,你还必须定义一个客户端(或使用最终下载的JavaScript代码)用于调用这个服务方法的接口。当我显示客户端代码时(请参考MyForm.java),该GWT使用一个我描述的回调设计模式。
| package com.parkerriver.gwt.testapp.client; import com.google.gwt.user.client.rpc.AsyncCallback; public interface ShowRespServiceAsync { public void displayResponse(String s,AsyncCallback callback); } |
这个AsyncCallback对象负责(作为GWT API的一部分)为客户端处理服务响应。
六、 一个Servlet
最后,你必须定义一个实现远程服务接口的Java类。这个类将位于你的Ajax应用程序的服务器端。
| package com.parkerriver.gwt.testapp.server; import com.parkerriver.gwt.testapp.client.ShowRespService; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import java.util.Date; public class ShowRespServiceImpl extends RemoteServiceServlet implements ShowRespService { public String displayResponse(String req) { if(req.length() < 1) { throw new IllegalArgumentException( "Blank submissions from the client are invalid."); } StringBuffer buf = new StringBuffer("Your submission: "); Date date = new Date(); String serverInfo = this.getServletContext().getServerInfo(); buf.append(req); buf.append("\n"); buf.append("Server response: "); buf.append(date.toString()); buf.append("\n"); buf.append(serverInfo); return buf.toString(); } } |
这个类必须继承RemoteServiceServlet(这是本身继承自javax.servlet.http.HttpServlet的一个GWT API对象)。也就是说,这个类及其实现的接口必须被发布到你的servlet容器中。
七、 步骤
现在,既然定义了服务,那么让我们来回顾一个这个应用程序的目录结构。GWT包括一个命令行脚本applicationCreator,它能够为你生成一个框架性的工程目录结构。在你解压下载的GWT后,你会在顶级目录下发现该applicationCreator。我使用下列命令行作为开始:
| applicationCreator -out /Users/bruceperry/1gwt/secondapp/ com.parkerriver.gwt.testapp.client.MyForm |
图3展示了该目录看上去的样子。
![]() 图3:一个GWT和IntelliJ工程目录 |
applicationCreator生成./src目录以及MyForm-compile和MyForm-shell脚本。我的Ant文件执行的是MyForm-compile;另一个脚本将在GWT模式下启动主机方式。这个./src目录中包括了嵌套的目录以匹配你的包名,如图4所示。
MyForm.gwt.xml文件是一个生成的配置文件,它其实是GWT调用的一个“模块”。它指定描述你的应用程序“入口点”的Java类(这是一个类似于一个包含一个main()方法的Java类)。
| <module> <!—继承核心Web Toolkit。--> <inherits name='com.google.gwt.user.User'/> <!--指定应用程序入口点类。--> <entry-point class='com.parkerriver.gwt.testapp.client.MyForm'/> </module> |
其它的文件或目录,包括./classes、./WEB-INF和./gwtproj.ipr,都是一个IntelliJ Web应用程序工程的必要组成部分;因此,你不必特别注意它们。
另外,直到生成你的应用程序代码的GWT编译器时,./www目录才出现(除非你自己创建它)。我的工程使用了Ant文件gwtproj.xml,还有定义在gwtproj.properties中的属性。在我向你展示Ant构建文件前,我们先来看一下描述应用程序入口点的MyForm.java类。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
·Ajax技术专题 (400篇文章)
·Ajax技术应用开发 (400篇文章)
·Wlan组网----家庭专题 (3465篇文章)
·Ajax入门与提高 (73篇文章)
·Ajax框架与实例 (168篇文章)
·Ajax技术核心 (153篇文章)
·Ajax的WEB开发 (112篇文章)
·AJAX应用实践 (90篇文章)
·Ajax技术开发 (109篇文章)
·Ajax技术应用开发 (400篇文章)
·Wlan组网----家庭专题 (3465篇文章)
·Ajax入门与提高 (73篇文章)
·Ajax框架与实例 (168篇文章)
·Ajax技术核心 (153篇文章)
·Ajax的WEB开发 (112篇文章)
·AJAX应用实践 (90篇文章)
·Ajax技术开发 (109篇文章)
·Ajax程序设计入门(1) (3507次浏览)
·JavaScript实现AJAX的拖动效果 (2938次浏览)
·Ajax基础教程(1) (504次浏览)
·掌握AJAX之AJAX通讯技术简介 (493次浏览)
·Ajax:拥抱JSON,让XML走开 (474次浏览)
·ASP.NET Ajax调用WCF服务的代码示例 (36次浏览)
·AJAX开发过程中的七宗罪 (32次浏览)
·最流行的AJAX框架 (29次浏览)
·Ajax工具和技术综述 (21次浏览)
·在BEA WEBLOGIC PORTAL中进行AJAX编程,第1部 (13次浏览)
·JavaScript实现AJAX的拖动效果 (2938次浏览)
·Ajax基础教程(1) (504次浏览)
·掌握AJAX之AJAX通讯技术简介 (493次浏览)
·Ajax:拥抱JSON,让XML走开 (474次浏览)
·ASP.NET Ajax调用WCF服务的代码示例 (36次浏览)
·AJAX开发过程中的七宗罪 (32次浏览)
·最流行的AJAX框架 (29次浏览)
·Ajax工具和技术综述 (21次浏览)
·在BEA WEBLOGIC PORTAL中进行AJAX编程,第1部 (13次浏览)
·ASP.NET Futures 的Ajax应用开发 10-31
·ASP.NET AJAX之内部揭秘(1) 10-31
·ASP.NET AJAX入门之Timer控件简单使用 10-31
·ASP.NET AJAX 学习指南 10-31
·ASP.NET AJAX 拖放功能6种实现方法总结 10-31
·ASP.NET AJAX 的JSON 10-31
·ASP.NET AJAX Client Library: 更繁?更简? 10-31
·ASP.NET AJAX 1.0 发布 10-31
·Ajax之后下一个最热门的网络技术是什么? 10-31
·AJAX在移动领域威胁到Java ME了么? 10-31
·ASP.NET AJAX之内部揭秘(1) 10-31
·ASP.NET AJAX入门之Timer控件简单使用 10-31
·ASP.NET AJAX 学习指南 10-31
·ASP.NET AJAX 拖放功能6种实现方法总结 10-31
·ASP.NET AJAX 的JSON 10-31
·ASP.NET AJAX Client Library: 更繁?更简? 10-31
·ASP.NET AJAX 1.0 发布 10-31
·Ajax之后下一个最热门的网络技术是什么? 10-31
·AJAX在移动领域威胁到Java ME了么? 10-31
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容





