当我们装好Google的 eclipse插件之后. 我们就可以使用它来创建我们的App了.
new-->Web Application Project. 输入你的项目名 跟 Google需要的包名finish就可以了.
之后在我们的程序中,我们的项目目录类似于下图:
右键项目名称.然后 run as web app 就可以看到项目的效果了.(这块确实有点慢..)
开出的窗口有两个. 一个是Host . 一个是Client . Host里面可以restart. 打开浏览器等等.client里面可以compile等等. 很简洁..
下面就进入我们的实质. 来分析下. 上图所谓的文件目录到底各自的作用在哪里..
让我们先从Client那里开始. 刚才我们打开了Google为我们自带的例程. 那就从浏览器地址栏开始吧.
地址栏指向了
http://localhost:8080/blog.html那我们就从blog.html入手.
在最下面的war 包里面 我们找到 Blog.html . 打开他 发现核心的代码其实只有这么两句.
<table align="center">
<tr>
<td colspan="2" style="font-weight:bold;">Please enter your name:</td>
</tr>
<tr>
<td id="nameFieldContainer"></td>
<td id="sendButtonContainer"></td>
</tr>
</table>
只是建立了一个table . 并没有一点Javascript的痕迹.那我们的Ajax效果是怎么来的?
局部揭开迷局. 接下来我们从我们的src入手. 逐步揭开谜底.
首先 .com.javaeye包下面. 我们发现了一个Blog.gwt.xml 打开它. 在这个xml中.
<module rename-to='blog'>
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<entry-point class='com.javaeye.client.Blog'/>
</module>
在这个xml中. 我们发现他定义了一个module . 也就是一个编译单元. 在Gwt中. 编译的工作是以单元为单位的. 上面引用(继承)了其他两个单元.然后下面一个不是引用. 而是指定了一个entry-point . 这个进入点是每一个编译单元必须有的. 就如同我们的main方法. 可以看到.entry-point指定到了我们的 com.javaeye.client.Blog这个class上. 时不我待. 我们现在就进入这个例程看看.
可以看到我们的类实现了EntryPoint接口. 这个接口只有一个方法. 那就是onModuleLoad()这个方法. 就是我们将要编译成js的地方. 也是gwt的精髓所在. 下面我们深入这个方法. 来做进一步的阐述.
RootPanel.get("nameFieldContainer").add(nameField);
RootPanel.get("sendButtonContainer").add(sendButton);
我们来看这两句代码. 他们获取了我们在Blog.html里面的两个 td 的id 然后在里面加上了两个 Button . 这两个 nameFiled 跟sendButton 是在前面定义的. 从而达到织入js代码的目的. 然后接下来 程序new了一个DialogBox..来作为我们Ajax应用的程序框. 真正的Ajax还没开始呢. 我们来探究下这个DialogBox是怎么被调用来实现我们的Ajax特效在网页上的.
closeButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
dialogBox.hide();
sendButton.setEnabled(true);
sendButton.setFocus(true);
}
});
这里是典型的GUI程序的写法了. 匿名内部类. 来实现close掉整个dialogBox .
再往下看. 就是我们的精髓了.下面是一个内部类. 内部类. 匿名内部类. 多么熟悉的GUI经验啊.
class MyHandler implements ClickHandler, KeyUpHandler
在Gwt1.6里面用handler 代替了listener . 对于以前有Swing编程经验的同学来说有点不同. 这个handler好不好用暂时我也说不上来. 就是觉得没有listener好用. 但是listener已经不被推荐使用了.
public void onClick(ClickEvent event) {
sendNameToServer();
}
public void onKeyUp(KeyUpEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
sendNameToServer();
}
}
下面很自然而然的实现了两个接口的方法. 很自然. 跟我们的GUI编程没有半点不同.
在 Event里面. 我们发现他 调用了一个方法. sendNameToserver(); 这个方法就是我们整个程序的精髓之处了. 我们先不看他. 下一篇再去分解.
在inner class 结束之后
程序为我们的button 跟 key加上了 handler
MyHandler handler = new MyHandler();
sendButton.addClickHandler(handler);
nameField.addKeyUpHandler(handler);
还是与GUI完全相同吧 . 这就是Gwt的魅力所在. 我们不需要知道js 只要简单的Java程序就足以搞定复杂的Ajax应用.. 多么神奇啊.
加上这些之后 我们的button 就可以响应了. 下一篇我来尝试分析下程序的精髓之处sendNameToServer().也是RPC使用之处.Ajax响应页面之处.欢迎大家拍砖.
- 大小: 9.2 KB
分享到:
相关推荐
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...
一个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...
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.for.Ajax
Codejock.Xtreme.Toolkit.Pro.v15.3.1 源码,.sln的工程属性32位和64位已经全部修改为 VS2017工程属性。直接使用VS2017打开编译即可使用。同时里面包含了已编译好的debug和release的动态库和静态库如下: ToolkitPro...
《Source Code(Prentice.Hall.Google.Web.Toolkit.Applications.Dec.2008)》是针对2008年出版的Prentice Hall书籍《Google Web Toolkit Applications》的源代码集合。这本书深入介绍了如何使用Google Web Toolkit ...
- 通过学习《Packt.Google.Web.Toolkit.2.Application.Development.Cookbook》,开发者不仅能够掌握如何使用GWT高效地开发Web应用,还能深入了解如何将GWT与其他关键技术(如JPA、MySQL和iReport)结合起来,以构建...
Codejock.Xtreme.Toolkit.Pro.v15.0.1是一个强大的UI库,专为MFC(Microsoft Foundation Classes)框架扩展而设计。该库提供了一系列的工具包,旨在帮助开发者快速构建具有专业外观和功能丰富的应用程序。源码的提供...
《Prentice.Hall.Google.Web.Toolkit.Applications.Dec.2007》这本书主要聚焦于Google Web Toolkit (GWT)的应用开发,它是一个强大的开源工具,允许开发者使用Java语言来构建高性能、跨浏览器的Ajax应用程序。...
《Packt.Google.Web.Toolkit.2.Application.Development.Cookbook.Source.Code》这个压缩包文件主要包含的是关于使用Google Web Toolkit(GWT)进行Web应用程序开发的源代码。GWT是一款强大的开源工具,它允许开发者...
Codejock.Xtreme.Toolkit.Pro.v15.2.1.Full.Source.Retail.Incl.Keymaker-ZWT 是一个针对Microsoft Foundation Class (MFC) 库的扩展工具包,由Codejock Software开发。这个版本15.2.1代表了该产品在发布时的最新...
《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的强大功能,创建高效、交互性强的...
Codejock.Xtreme.Toolkit.Pro.v11.20.Full.Source-ZWT 密码生成器
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.3.0
cudatoolkit-10.1.243-h74a9793_0
cudatoolkit-10.2.89-hfd86e86_1.tar.bz2资源下载,552M,离线下载可直接使用
大名鼎鼎的界面库Toolkit.Pro.v15.3.1完整源代码
《Google.Web.Toolkit.GWT.Java.AJAX.Programming》是一本由Manning出版社在2007年2月出版的专业书籍,主要关注的是Google Web Toolkit(GWT)在Java AJAX编程中的应用。这本书深入探讨了如何利用GWT进行高效、跨...