书接上回. 我们该来探讨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开发
Packt.Google.Web.Toolkit.2.Application.Development.Cookbook
Prentice.Hall.Google.Web.Toolkit.Applications.Dec.2007.pdf 使用 Google Web Toolkit 开发 Ajax
Packt.Google.Web.Toolkit.2.Application.Development.Cookbook.Source.Code
Google.Web.Toolkit.2.Application.Development.Cookbook
Packtpub.Google.Web.Toolkit.2.Application.Development.Cookbook.Nov.2010 包含源代码
Source code for Prentice.Hall.Google.Web.Toolkit.Applications.Dec.2008.pdf
Google.Web.Toolkit.for.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 商用安装程序,安装序列号提供要联系我。
Codejock.Xtreme.Toolkit.Pro.v15.3.1 源码,.sln的工程属性32位和64位已经全部修改为 VS2017工程属性。直接使用VS2017打开编译即可使用。同时里面包含了已编译好的debug和release的动态库和静态库如下: ToolkitPro...
01.ToolKit安装方式及在线更新 02.ToolKit隐藏无效设备 03.ToolKit配置服务器IP地址 04.ToolKit修改更新源执行更新 05.ToolKit生成IOL许可和修复文件权限 06.ToolKit添加新设备支持 07.ToolKit添加配置导出功能 08....
最新版:Codejock.ToolkitPro.MFC.v15.1.3.0908(安装版,包含完整源代码) 请注意:资源来自于hotfile,下载后请于24小时内删除,请支持正版 系列号:请参照sn.txt文件 解压缩:xiaoqing
大名鼎鼎的界面库Toolkit.Pro.v15.3.1完整源代码
一个JavaScript格式化字符串工具,具体使用请参见 http://blog.csdn.net/loocao/archive/2010/01/07/5148650.aspx
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...
数据库迁移工具 EasyFrom.ESF.Database.Migration.Toolkit.Pro.v8.2.07AMPED
Codejock.ToolkitPro.MFC.Eval.17.3.0.part2
Addison.Wesley.Essential.GWT.Building.for.the.Web.with.Google.Web.Toolkit.2
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...