摘要: 前边已经有了两篇文章,用GWT(Google Web Toolkit)开发Ajax-HelloWorld,用GWT(Google Web Toolkit)开发Ajax-你好,前边两个例子,都是只用了客户端的代码,并没有客户端和服务器端的交互过程。本文将会介绍一个简单的客户-服务器交互过程。客户端一样会显示一个按钮,点击的时候会返回服务器时间。并一同介绍一下简单的调试过程。
关键字: GWT Google Web Toolkit Ajax 入门应用 rpc调用 RemoteService RemoteServiceServlet
介绍
GWT(GoogleWebToolkit)是一个由Google开发提供的Java
Ajax开发框架,已经用于开发GoogleMaps,GMail等应用了,它帮助开发者从各个不同的浏览器的诡异中解脱出来。现在写一个动态的Ajax
应用是一个令人郁闷,有严重错误倾向的过程,可能要花上90%的时间来处理那些敏感的,易错的浏览器之间的兼容性和跨平台,并且javascript的难
以调试性更加增加了整个开发过程的难度,和应用的健壮性。
GWT可以让你提供同样的即时的,有良好用户体验的应用的时候,避免很多这样令人头痛的事情。开发者可以用java语言来写界面,然后GWT提供的编译器会把他们编译成javascript和HTML。
假如说前面的两个例子,只是一个依样画葫芦的,从今天开始,就需要更多地去考虑一些Ajax的模式和GWT提供的便利的背后的原理。
GWT应用和传统的HTML页面应用的根本的区别就是,GWT在执行过程不需要获取新的页面来更新信息。尽管如此,向所有的客户端/服务端应用程序一样,
GWT应用也要在执行过程,不断地才服务器取得数据,这种由一种叫RPC(远端过程调用)的机制来实现,也有时叫做服务端调用。GWT让这个RPC过程可
以直接引用一些Java对象来实现。(注:这里是只是一些,并不是所有的)。
恰当的利用好这个特性可以提供应用的效率,减少客户端服务器端的数据交换,更能提供友好的用户体验。
这些服务器端的代码,或是操作,被称为一个service,这个不同于SOAP(简单对象访问协议)中的Web Service。这是一个需要区别的概念。
本文将会介绍一个简单的客户-服务器交互过程。客户端一样会显示一个按钮,点击的时候会返回服务器时间。并一同介绍一下简单的调试过程。
实现过程
1、如用GWT(Google Web Toolkit)开发Ajax-HelloWorld创建应用。
应用名为org.jmg.client.GetTime
2、创建Service
创建两个接口和一个实现:
interface:org.jmg.client.GetTimeService extends RemoteService
interface:org.jmg.client.GetTimeServiceAsync
class:org.jmg.server.GetTimeServiceImpl extends RemoteServiceServlet implements RemoteServcie
在接口GetService中添加 String getTime()方法。
GetTimeServiceAsync中添加 void getTime(AsyncCallback callback)方法。
在类GetTimeServiceImpl中实现获取时间的方法:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date());
注意:
a.GetTimeService 必须扩展RemoteService这个标志接口
b.GetTimeServiceAsync 的命名规则,只能在GetTimeService 后边添加 Async
c.GetTimeServiceAsync 的 getTime 这个方法不能有返回值,实际上,这个接口的所有的方法都不能有返回值,只能void。这里的原因会在以后的慢慢解释。
d.GetTimeServiceImpl 必须继承 RemoteServiceServlet
e.GetTimeServiceAsync 不需要实现,GWT会在编译的时候帮你实现。
f.以上的三个类的包都不能修改
3、修改部署文件:
修改WEB-INF\web.xml:
添加
GetTimeServcie
org.jmg.server.GetTimeServiceImpl
GetTimeServcie
/timeService
GetTimeServiceImpl继承了RemoteServiceServlet(这个类扩展java的HttpServlet),它将需要部署成一个servlet。
4、修改GetTime
和前面的两个例子一样,默认创建的应用的GetTime中按钮的动作就是在页面上显示"hello world"。现在我们需要改变这个按钮的点击时候行为,要把从服务器获取时间显示出来。
a.找到我们定义的timeServcie的Servlet。
在GetTime中添加一个方法:initiailizeServiceEntryPoint
private final GetTimeServiceAsync initiailizeServiceEntryPoint() {
GetTimeServiceAsync timeService = (GetTimeServiceAsync) GWT.create(GetTimeService.class);(注意,这里create参数是GetTimeService.class,但是返回的实例是一个GetTimeServiceAsync)
ServiceDefTarget target = (ServiceDefTarget) timeService;(这里又把timeService,强换型成ServiceDefTarget)
String staticResponseURL = GWT.getModuleBaseURL();(取得应用的基路径,这个可能会导致之不到servlet,只要把它改成应用的路径,例如/gwt/)
staticResponseURL += "/timeService";
target.setServiceEntryPoint(staticResponseURL);(把刚刚定义的servlet的path和应用基路径两者组合,得到最后的servlet路径)
return timeService;
}
一直都保持这么一个概念,所有client中的代码都GWT都会编译成合适js,HTML,都会在客户端执行。会对整个过程的理解有很好的帮助。
b.修改onModuleLoad:
public void onModuleLoad() {
final Button button = new Button("Click me");
final Label label = new Label();
final GetTimeServiceAsync gtsa = initiailizeServiceEntryPoint();
button.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
gtsa.getTime(new AsyncCallback() {
public void onFailure(Throwable caught) {
label.setText(caught.getLocalizedMessage());(调用失败的时候,把错误信息显示出来)
}
public void onSuccess(Object result) {
label.setText((String) result);(这里为什么可以强换型到String?这里的值就是GetTimeService.getTime()方法的返回值)
);
}
});
5、编译与部署:
a.老习惯,用GetTime-compile.cmd用编译客户端代码(注意,这里只是编译客户端代码),会在www\org.jmg.GetTime
目录生成客户端所合适的html和js,复制www\org.jmg.GetTime下所有的文件到tomcat应用的webapps\gwt\
gettime目录下。
b.复制elipse编译输出目录下的类到tomcat应用webapps\gwt\WEB-INF\classes目录。
c.检查web.xml文件是否已经复制,或是已经修改。
部署完成。
6、运行测试:
启动tomcat
访问http://localhost:8080/gwt/gettime/GetTime.html
点击click me 按钮,显示服务器时间
参考: Google Web Toolkit
Remote Procedure Calls
来自:http://letup.blogspot.com/2006/09/gwtgooglewebtoolkitajax-gettime.html
分享到:
相关推荐
### 使用GWT开发Ajax应用详解 #### 一、Google Web Toolkit(GWT)简介 Google Web Toolkit(简称GWT)是一款由Google开发的开源框架,它主要用于帮助开发者利用Java语言进行AJAX应用程序的开发。通过GWT,开发者...
GWT,全称为Google Web Toolkit,是一个开源的Java开发框架,允许开发者使用Java语言来编写Web应用程序。这个框架由Google创建并维护,旨在简化复杂的JavaScript编程,通过编译Java代码为高效的JavaScript,使得Web...
### 使用Google Web Toolkit (GWT) 开发基于AJAX的SAP NetWeaver J2EE框架Web应用 #### 概述 本文档旨在提供一种利用Google Web Toolkit (GWT) 在SAP NetWeaver J2EE框架下开发AJAX基础Web应用的方法。SAP ...
GWT-Developer-Plugin
3. **Ajax集成**:将Gwt-Ext与其他Ajax库(如jQuery)集成,以利用它们的优势互补。 4. **测试与调试**:了解GWT的单元测试工具GwtTestCase,以及如何使用GWT的超级浏览器模式进行调试。 5. **最佳实践**:获取...
通过以上介绍可以看出,GWT提供了一个强大而灵活的开发框架,使得开发者能够使用Java语言构建出高质量的AJAX应用程序。无论是对于初学者还是有经验的开发者来说,掌握GWT的基本原理和开发流程都是非常有价值的。随着...
原地址如下 http://google-web-toolkit.googlecode.com/files/gwt-dev-plugin-1.26-rc1.xpi
atmosphere-gwt20-client-1.1.0.rc2.jar
atmosphere-gwt20-common-1.1.0.rc2.jar
atmosphere-gwt20-jersey-1.1.0.rc2.jar
atmosphere-gwt20-server-1.1.0.rc2.jar
atmosphere-gwt20-jackson-1.1.0.rc2.jar
atmosphere-gwt20-client-1.1.0.rc2-sources.jar
atmosphere-gwt20-common-1.1.0.rc2-sources.jar
atmosphere-gwt20-jersey-1.1.0.rc2-sources.jar
atmosphere-gwt20-jackson-1.1.0.rc2-sources.jar
GWT提供了丰富的API、工具和库,简化了跨浏览器的JavaScript开发,并且支持AJAX技术,使Web应用具有桌面应用般的用户体验。 描述中提到的“IE浏览器调试插件”是专门为GWT开发者设计的,帮助他们在Internet ...
1. **Google Web Toolkit (GWT)**:GWT是一个Java开发框架,允许开发者用Java编写前端代码,并自动编译为优化过的JavaScript,以运行在浏览器上。GWT提供了丰富的组件库、强大的调试工具和事件模型,简化了RIA的开发...