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                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM