书接上回. 我们该来探讨Ajax的精髓了. 也就是gwt中Java的rpc来实现的.
我们先来看看sendNameToServer()这个方法.
private void sendNameToServer() {
sendButton.setEnabled(false);
String textToServer = nameField.getText();
textToServerLabel.setText(textToServer);
serverResponseLabel.setText("");
greetingService.greetServer(textToServer,
new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
// Show the RPC error message to the user
dialogBox
.setText("Remote Procedure Call - Failure");
serverResponseLabel
.addStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(SERVER_ERROR);
dialogBox.center();
closeButton.setFocus(true);
}
public void onSuccess(String result) {
dialogBox.setText("Remote Procedure Call");
serverResponseLabel
.removeStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(result);
dialogBox.center();
closeButton.setFocus(true);
}
});
}
这可是精髓. 当然那些gui方面的东西我就不分析了. 像类似于sendButton.setEnabled(false);这些的. 我们直接到最要害的地方.
greetingService.greetServer(textToServer,
new AsyncCallback<String>()
突然冒出来一个greetingService 我们找找他的定义在哪?
private final GreetingServiceAsync greetingService = GWT
.create(GreetingService.class);
在这里. 是由GWT.creat()创建的. 我们查查api . 翻看doc文档.
引用
static <T> T
create(java.lang.Class<?> classLiteral)
Instantiates a class via deferred binding.
这个方法就是一个 实例化方法. 然后返回相应的实例. 里面的参数 这里我不禁要问. GreetingServiceAsync 怎么能跟GreetingService.class匹配上? .怎么就不报错?
我们来翻看一下这两个接口的代码.
public interface GreetingService extends RemoteService {
String greetServer(String name);
}
RemoteService是一个标记接口. 只要是rpc的接口都应该继承他.由于是marker接口.所以没有实际的方法. 所以内部自然是我们的方法.
public interface GreetingServiceAsync {
void greetServer(String input, AsyncCallback<String> callback);
}
而仔细观察这两个接口的命名 .我们会发现下面的多了Async..其实这两个是有很大关系的.并不是没有关系.
引用
As an example, suppose the service interface defines a method called getShapes as follows:
Shape[] getShapes(String databaseName) throws ShapeException, DbException;
Its asynchronous counterpart method be declared as:
void getShapes(String databaseName, AsyncCallback<Shape[]> callback);
这就是异步版的代码跟同步版的区别. 多了一个AsyncCallback.而这个东东. 就是就是用来接收异步传过来的数据的.如果接受成功了. 就会调用其中的onSuccess()方法. 而失败了.则会调用onFailure方法. 就是这么个意思.
既然你在程序里面
greetingService.greetServer(textToServer,
new AsyncCallback<String>()
greetServer 方法在哪里? 之前我们看到的都是interface . 除了我们本身的Blog.java其他都是接口.在我们图的下方. 有一个GreetingServiceImpl的class. 他实现了我们的GreetingService接口. 然后他还继承了一个class.名叫RemoteServiceServlet.这个class是做什么用的? 其实这就是用于从clinet自动的反序列化(逆序列化)前面的请求. 然后再序列化给response给client.. 这一切都成功了 AsyncCallback就会找succes . 失败则亦然 .
现在回头看看我们的例程. 右键run as web app 一下. 是否他的调用过程烂熟于心了?
随后带大家继续深入 Google web Toolkit . ps:当然是在有时间的情况下.
分享到:
相关推荐
《Xtreme ToolkitPro v18.5.0:深入解析MFC与C++的集成开发工具》 Xtreme ToolkitPro v18.5.0是一款强大的开发工具集,专为使用MFC(Microsoft Foundation Classes)框架进行C++应用程序开发而设计。MFC是微软提供...
- 通过学习《Packt.Google.Web.Toolkit.2.Application.Development.Cookbook》,开发者不仅能够掌握如何使用GWT高效地开发Web应用,还能深入了解如何将GWT与其他关键技术(如JPA、MySQL和iReport)结合起来,以构建...
《Source Code(Prentice.Hall.Google.Web.Toolkit.Applications.Dec.2008)》是针对2008年出版的Prentice Hall书籍《Google Web Toolkit Applications》的源代码集合。这本书深入介绍了如何使用Google Web Toolkit ...
Google.Web.Toolkit.for.Ajax
《Packt.Google.Web.Toolkit.2.Application.Development.Cookbook.Source.Code》这个压缩包文件主要包含的是关于使用Google Web Toolkit(GWT)进行Web应用程序开发的源代码。GWT是一款强大的开源工具,它允许开发者...
《Google.Web.Toolkit.2.Application.Development.Cookbook》是一本专为开发者提供实践指导的书籍,它聚焦于使用Google Web Toolkit(简称GWT)进行Web应用开发的技术细节与实践技巧。本书包含了超过70个实用且高效...
《Packtpub.Google.Web.Toolkit.2.Application.Development.Cookbook.Nov.2010》是一本专注于Google Web Toolkit(GWT)2.0应用程序开发的实战指南,它旨在帮助开发者充分利用GWT的强大功能,创建高效、交互性强的...
《Prentice.Hall.Google.Web.Toolkit.Applications.Dec.2007》这本书主要聚焦于Google Web Toolkit (GWT)的应用开发,它是一个强大的开源工具,允许开发者使用Java语言来构建高性能、跨浏览器的Ajax应用程序。...
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.4.0.unitypackage Microsoft.MixedReality.Toolkit.Unity.Extensions.2.4.0. Microsoft.MixedReality.Toolkit.Unity.Tools.2.4.0.unitypackage Microsoft.Mixed...
Codejock.ToolkitPro.MFC.16.2.4.exe 商用安装程序,安装序列号提供要联系我。
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.4.0.unitypackage Microsoft.MixedReality.Toolkit.Unity.Extensions.2.4.0. Microsoft.MixedReality.Toolkit.Unity.Tools.2.4.0.unitypackage Microsoft.Mixed...
《Google.Web.Toolkit.GWT.Java.AJAX.Programming》是一本由Manning出版社在2007年2月出版的专业书籍,主要关注的是Google Web Toolkit(GWT)在Java AJAX编程中的应用。这本书深入探讨了如何利用GWT进行高效、跨...
书中所附的PDF文档《[大家网]Beginning.Google.Web.Toolkit.From.Novice.to.Professional[www.TopSage.com].pdf》将是你学习旅程的重要参考资料,里面包含了丰富的实例和代码示例,助你在实践中不断进步。
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.4.0.unitypackage Microsoft.MixedReality.Toolkit.Unity.Extensions.2.4.0. Microsoft.MixedReality.Toolkit.Unity.Tools.2.4.0.unitypackage Microsoft.Mixed...
Codejock.ToolkitPro.MFC.v15.1.3.0908带序列号 VC界面库插件 vc6.0需要安装sp6补丁 或者修改vc文件具体网上搜索Codejock.ToolkitPro 安装方法
最新版:Codejock.ToolkitPro.MFC.v15.1.3.0908(安装版,包含完整源代码) 请注意:资源来自于hotfile,下载后请于24小时内删除,请支持正版 系列号:请参照sn.txt文件 解压缩:xiaoqing
01.ToolKit安装方式及在线更新 02.ToolKit隐藏无效设备 03.ToolKit配置服务器IP地址 04.ToolKit修改更新源执行更新 05.ToolKit生成IOL许可和修复文件权限 06.ToolKit添加新设备支持 07.ToolKit添加配置导出功能 08....
Codejock.Xtreme.Toolkit.Pro.v15.3.1 源码,.sln的工程属性32位和64位已经全部修改为 VS2017工程属性。直接使用VS2017打开编译即可使用。同时里面包含了已编译好的debug和release的动态库和静态库如下: ToolkitPro...
大名鼎鼎的界面库Toolkit.Pro.v15.3.1完整源代码