您的位置:首页 > 编程语言 > Java开发

面向 Java 开发人员的 Ajax: 使用 Google Web Toolkit 开发 Ajax

2008-01-23 20:22 906 查看
GWT(Google Web Toolkit) 是 Google 最近推出的一个开发 Ajax 应用的框架,它支持用 Java 开发和调试 Ajax 应用,本文主要介绍如何利用 GWT 进行 Ajax 的开发。


Ajax技术是当前开发web应用的非常热门
的技术,也是Web
2.0的一个重要的组成部分。然而如果用传统的方式Javascript进行Ajax开发的话,就会使得应用程序非常难以进行调试,从而降低了生产效率。
Google最近推出的GWT有望为我们解决这个难题,GWT是一个开发Ajax应用的框架,它使程序员用Java同时开发客户端和服务器端的代码。
GWT的编译器会把用于开发客户端的Java代码转化成Javascript和Html,而程序员不用关心这一转换过程。这样程序员就可以在自己喜欢的
Java IDE里面开发自己的Ajax应用程序。

本文主要从以下几个方面进行介绍:

1、 GWT特性简介

2、 用GWT进行UI开发

3、 用Javascript开发Ajax应用简介

4、 用GWT进行Ajax开发

GWT特性简介

1.动态,可重用的UI组件

GWT提供的组件库使用户可以很容易的开发出漂亮的UI, 每个组件对应于GWT的一个类。在本文的第二部分会比较详细的介绍GWT对UI的支持。

2.简单的RPC调用

使用GWT,可以方便的实现客户端和服务器端的通信,特别是使得异步通信变的非常简单。在本文的后面部分将对利用GWT进行RPC调用进行详细介绍。

3.更加方便的调试

由于在开发阶段不需要生成HTML截面,用户开发的代码实际上是在JVM上运行的,这样用户就可以用传统的调试Java代码的方法对程序进行调试,从而加快了调试的速度,减少了软件开发的时间。

4.浏览器兼容性

在大多数情况下,用GWT开发出来的程序会支持IE、Firefox、Mozilla、Safari和Opera,用户在开发的时候不必担心浏览器的兼容性问题。而浏览器的兼容性问题也是用直接用Javascript进行Ajax应用开发所面临的一个另程序员棘手问题。

5.可扩展性

如果你觉得GWT提供的API不能满足需求,你可以利用JSNI将Javascript语句直接嵌入至Java代码中。

用GWT进行UI开发

在本文的这一部分,我们将探讨一下GWT对UI开发的支持。在GWT中,包含我们进行Web开发所需要的大部分组件,比如按纽(Button),文
本框(Text box)等。图一显示了部分GWT所支持的UI组件。从图片的显示效果来看,利用GWT可以做出非常漂亮的UI。

[b]图一:GWT支持的部分UI组件

package com.sample.myProject.client;

import com.google.gwt.core.client.EntryPoint;

import com.google.gwt.user.client.ui.Button;

import com.google.gwt.user.client.ui.HorizontalPanel;

import com.google.gwt.user.client.ui.Label;

import com.google.gwt.user.client.ui.PasswordTextBox;

import com.google.gwt.user.client.ui.RootPanel;

import com.google.gwt.user.client.ui.TextBox;

package com.sample.myProject.client;

import com.google.gwt.user.client.rpc.RemoteService;

package com.sample.myProject.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

package com.sample.myProject.server;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import com.sample.myProject.client.SampleService;

public class SampleServiceImpl extends RemoteServiceServlet implements

package com.sample.myProject.client;

import com.google.gwt.core.client.EntryPoint;

import com.google.gwt.core.client.GWT;

import com.google.gwt.user.client.rpc.AsyncCallback;

import com.google.gwt.user.client.rpc.ServiceDefTarget;

import com.google.gwt.user.client.ui.Button;

import com.google.gwt.user.client.ui.ClickListener;

import com.google.gwt.user.client.ui.Label;

import com.google.gwt.user.client.ui.RootPanel;

import com.google.gwt.user.client.ui.Widget;

/** *//**

public class DemoClient implements EntryPoint {

public void onModuleLoad() {

final SampleServiceAsync sampleService = (SampleServiceAsync)

GWT.create(SampleService.class);

ServiceDefTarget target = (ServiceDefTarget)sampleService;

String staticResponseURL = GWT.getModuleBaseURL();

staticResponseURL += "/getStringService";

target.setServiceEntryPoint(staticResponseURL);

final Label label = new Label();

final Button button = new Button("Get String");

button.addClickListener(new ClickListener() {

public void onClick(Widget sender) {

sampleService.getString(new AsyncCallback() {

public void onSuccess(Object result) {

label.setText((String) result);

}

public void onFailure(Throwable caught) {

label.setText(caught.getMessage());

}

});

}

});

RootPanel.get("1").add(button);

RootPanel.get("2").add(label);

}

}
代码的第13行得到了一个实现了接口SampleServiceAsync的类的实例。第15行创建了一个ServiceDefTarget对象的
一个实例,通过这个对象可以设置请求的目的地。程序的第18行设置了请求的目的地的URL,在我们的例子中是"/getStringService",这
个URL会在web.xml文件中被mapping到servlet
SampleServiceImpl上。程序的22行到33行为我们添加的button设置了单击响应事件。在单击响应事件中调用
sampleService的getString(AsyncCallback
callback);方法。这个方法是用来进行异步的远程过程调用的(RPC).并且在实现接口AsyncCallback的代码中指定了回调函数,当远
程过程调用成功后就执行onSuccess(Object
result)函数,其中result中存放有从服务器端返回的结果.。在远程工程调用失败后就执行onFailure(Throwable
caught)函数。程序的最后把Button组件和Label组件加到panel中。
现在我们已经完成了程序的开发,图八显示了我们程序的运行结果,在点击Button后,右边回打出一句话来,重要的是这句话是以异步的方式从服务器端取得的,不需要进行页面的刷新,怎么样,现在是不是也想用GWT进行Ajax应用开发了呢?

[b]图八:RPC调用示例




总结

本文主要对用 GWT 进行 Ajax
开发进行了比较详细的介绍,并通过与传统的Ajax开发方式进行比较,使读者能更清楚地理解它们之间的区别,最后我们可以看出用GWT进行Ajax开发可
以使得程序员免受调试Javascript之苦,并且GWT自动处理了浏览器之间的兼容性问题,这些都会使得开发更加容易,快捷。因此,用GWT进行
Ajax开发是一种比较好的方式。希望本文能为读者学习GWT进行Ajax的开发有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: