zoukankan      html  css  js  c++  java
  • 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                

  • 相关阅读:
    2016北京集训测试赛(十四)Problem A: 股神小L
    2016北京集训测试赛(十三) Problem B: 网络战争
    BZOJ 3473 字符串
    2016北京集训测试赛(十一)Problem C: 树链问题
    微信服务号登陆优化
    重新认识下数组的concat方法
    微信服务号开发碰到的缓存问题!
    关于微信服务号开发的一些总结!
    JQ-weui中的日期选择控件关于时间段的设置!
    用json方法来作深拷贝应该知道的一点东西!
  • 原文地址:https://www.cnblogs.com/ITeyer/p/3397111.html
Copyright © 2011-2022 走看看