GWT入门学习与理解

前言

    最近在一家公司实习,公司使用的是GWT技术进行开发。作为一个新菜鸟对这方面完全不熟。因此笔者接下来会进入到GWT得初步学习中,整理一些知识点,写入博客,希望大家一起交流。

GWT技术简介

    来源:网络、《GWT入门与经典实例解析》、《GWT揭秘》

    GWT全称为Google web Toolkit,是Google公司发布的基于Java语言开发AJAX应用的开发工具包。我们知道AJAX技术是当前web开发领域的热门技术,它通过实现与服务器的异步通信机制,能够创建动态性和交互性更好的web应用,极大的提升了用户的体验。

    Tips:注意区分同步通信和异步通信的区别,简言之

           同步通信:客户端服务器通信需"协调",有一定的规则。例如:HTTP三次握手协议。

           异步通信:不需要协调,客户端向服务器发送请求,并不阻塞用户(发送时间不定)

     借助于GWT,开发者可以使用Java语言开发AJAX web应用,然后通过GWT提供的编译器将java代码转化为javascript代码,使得AJAX开发工作极大的简化。

    GWT通过Java语言编写AJAX应用,其设计参考Java AWT包设计,类命名规则、接口设计、事件监听等都和Java AWT非常类似,使开发者在学习和使用GWT时有一种轻车熟路的感觉,熟悉Java AWT的开发者不需要花费多大的力气就能够快速地理解GWT开发过程。在用户界面方面,GWT通过Widget封装了大量常用的Web组件和常见的AJAX组件,如Menu、TabBar和Tree等,并通过各种Panel为这些Widget提供页面布局方式,从而降低了AJAX页面开发的难度,提高了开发效率。

     GWT中提供了一种JSNI技术,它类似于Java中的JNI技术。JSNI技术可以在GWT的Java代码中嵌入JavaScript代码,因此已有的JavaScript组件可以被无缝地嵌入到GWT应用当中,使GWT拥有极大的扩展性。GWT封装了RPC(远程过程调用)机制,开发者可以方便地使用RPC完成异步通信,从而提供给用户丰富的Web 2.0应用体验。

GWT工程实例

     说了那么多理论性的东西,接下来实践一把。笔者使用的是Eclipse插件开发GWT应用,至于如何在Eclipse中配置网上的资源挺多的,笔者也就不多提及了。新建一个项目。

                 

         在模块入口onModelLoad函数中添加如下内容,实现在界面中添加一个按钮。

 1 package com.kiritor.client;
 2 
 3 import com.kiritor.shared.FieldVerifier;
 4 import com.google.gwt.core.client.EntryPoint;
 5 import com.google.gwt.core.client.GWT;
 6 import com.google.gwt.event.dom.client.ClickEvent;
 7 import com.google.gwt.event.dom.client.ClickHandler;
 8 import com.google.gwt.event.dom.client.KeyCodes;
 9 import com.google.gwt.event.dom.client.KeyUpEvent;
10 import com.google.gwt.event.dom.client.KeyUpHandler;
11 import com.google.gwt.user.client.Window;
12 import com.google.gwt.user.client.rpc.AsyncCallback;
13 import com.google.gwt.user.client.ui.Button;
14 import com.google.gwt.user.client.ui.DecoratorPanel;
15 import com.google.gwt.user.client.ui.DialogBox;
16 import com.google.gwt.user.client.ui.DockPanel;
17 import com.google.gwt.user.client.ui.HTML;
18 import com.google.gwt.user.client.ui.HTMLPanel;
19 import com.google.gwt.user.client.ui.Label;
20 import com.google.gwt.user.client.ui.RootPanel;
21 import com.google.gwt.user.client.ui.TextBox;
22 import com.google.gwt.user.client.ui.VerticalPanel;
23 
24 public class ImageButton implements EntryPoint {
25     public void onModuleLoad() {
26         final MyButton MyButton = new MyButton();
27         HTMLPanel  dockPanel = new HTMLPanel("<center></center>");
28         MyButton.setText("MyButton");
29         MyButton.addClickHandler(new ClickHandler() {
30             @Override
31             public void onClick(ClickEvent event) {
32                 Window.alert(MyButton.getElement().getInnerHTML());
33             }
34         });
35         dockPanel.add(MyButton);
36         RootPanel.get().add(dockPanel);
37     }
38 }
View Code

          其中MyButton是笔者自己定制的,读者可使用GWT自己的Button控件尝试。

          之后运行项目run as->web application即可看到运行效果图(浏览器要安装插件)

          

      欢迎大家一起交流学习!笔者也在CSDN:http://blog.csdn.net/lcore

                                                                                                           By LCore                

posted @ 2013-10-30 17:00  LCore  阅读(10168)  评论(4编辑  收藏  举报