这篇文章是转载的,原地址:GWT开端

以前的基于GWT的项目中广泛使用的还是gwt-windows-1.5.3这个版本的。

1.下载地址:
http://code.google.com/webtoolkit/download.html

2.GWT Designer + WindowBuilder Pro
http://www.instantiations.com/

3.一本牛书:Eclipse Plug-ins
http://www.qualityeclipse.com/

4.下载Plugin for Eclipse在线安装,最好全选SDK(GWT2.0.4 + AppEngine1.3.8) + GDT plugin模式.如果装SDK的话,会自动
下载两个SDK的插件,它们都是windows版本的SDK:
com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055
com.google.gwt.eclipse.sdkbundle.2.0.4_2.0.4.v201006301254
一定要安装在J2ee版Eclipse3.5下面,那个普通的Eclipse中缺失了太多的依赖插件了。

Eclipse Galileo Sr2 Packages---Eclipse IDE for Java EE Developers, (190 MB)
http://www.eclipse.org/downloads/packages/release/galileo/sr2

在2010-10-28时,又做了更新,当前的:
Google Plugin for Eclipse 3.5----1.4.0.v201010280047
Google App Engine Java SDK 1.3.8----1.3.8.v201010161055
Google Web Toolkit SDK 2.1.0----2.1.0.v201010280047

对GWT而言,它的作用就是“新建工程/工程属性/编绎/运行配置”这三个作用,不具有其它的任何作用了。

运行配置是com.google.gwt.dev.DevMode模式的时候,需要安装下面的firefox插件。
gwt-dev-plugin.xpi(支持Firefox/IE/Chrome三个版本的)

在运行配置中的Arguments/Classpath这两个选项卡很重要,在工程属性中Entry Point Modules这个很重要。

5.编绎生成的mygwt.nocache.js和*.cache.html可以不用细看,因为GWT其主要目的,就是不需要你关注JS的。

6.gwt-servlet.jar, gwt-user.jar, gwt-dev.jar三者之间的关系。在实际deploy的时候,只需要gwt-servlet.jar就OK了。

7.可以导出成jar包(再改war包,因为它包含了classes目录了)。

8.不需要编绎就可以运行,还可以Debug.

9.有Shell/Dev/Deploy三种运行方式。

10.可以新建5种新的类型的文件:
Module----新创建一个Module,会生成tan.gwt.xml
Entry Point Class----新建一个页面入口,会生成onModuleLoad()方法,且会注册在tan.gwt.xml
HTML Page----新建一个主页面文件,对应于tan.gwt.xml这个模块的。
UiBinder ---组合多个UI元素(多个Button/Text)为一个界面元素。
ClientBundle --- 主要用来访问资源文件(Image)

GWT中实现跳转及不同entrypoint怎么互相访问
http://yaoyanzhu.javaeye.com/blog/434196

1.在Compile的时候,最关键的是MyGWT.gwt.xml这个文件,其中的<module rename-to='wyang'>,是编绎后生成文件的目录。
而这个主页面文件MyGWT\war\MyGWT.html是没有办法再生的,必须要手工进行修改,MyGWT\war\MyGWT.css也是一样的,需要手工改。

2.在主页面文件MyGWT\war\MyGWT.html中,最重要的是这个引入这个JS文件:
    <script type="text/javascript" language="javascript" src="mygwt/mygwt.nocache.js"></script>

3.运行的模式:
com.google.gwt.dev.DevMode --->推荐这种方式运行。注意Web Application launch config中的Argument参数
com.google.gwt.dev.GWTShell

4.在使用eclipse-jee-galileo-SR2-win32的"Server + Dynamic Web Project"时, Server最多只支持Tomcat6.0.
布署时会把完整的web文件拷贝到这个目录下面:
D:\TDDOWNLOAD\eclipse-jee-galileo-SR2-win32\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
在server.xml文件中有一个<Host/>结点,<Host/>下面是<Context/>, 这个Context就是真正的Dynamic Web Project.

5.在添加了额外的Web Module以后,需要重新Publish和Restart Server, 这样,新添加的那个External Web Module才能起作用
注意,这个Web Module的内容不会拷贝到.metadata\.plugins\org.eclipse.wst.server.core\tmp0这个目录下面的,意味着,任何改
变将会立即生效。

6.如果工程名为MyGWT,编绎后会生成6个cache.html文件:
5AB8EAF1DAFE5B0D49F403D5626DC4E0.cache.html------> firefox将会使用这个文件。
EA70C7B7151DF4DBCA138470D3530ECB.cache.html------> IE将会使用这个文件。

7.上面的6个cache.html文件,分别对应于6个不同的浏览器,属于编绎过程中的参数控制的,至少需要30秒:

8.只支持firefox的GWT编绎文件,至少需要下面三个:
MyGWT.html ----》mygwt.nocache.js -----》5AB8EAF1DAFE5B0D49F403D5626DC4E0.cache.html
如下图:

9.辅助使用alert()或者是firefox的JS debug的插件,来对mygwt.nocache.js进行剖析:
得出:
M = L + Vb中的L=5AB8EAF1DAFE5B0D49F403D5626DC4E0 Vb=.cache.html M=5AB8EAF1DAFE5B0D49F403D5626DC4E0.cache.html
另外:
mygwt.onScriptLoad = function()将会被自动执行。
function C()中的c.gwtOnLoad(z, R, t, y);是很重要的一个调用。

10.5AB8EAF1DAFE5B0D49F403D5626DC4E0.cache.html里面几乎全部都是JS。
真正的ajax原来是完全用JS来强写body部分的(body部分用div + css)

11.直接访问http://localhost:8080/mygwt/mygwt/5AB8EAF1DAFE5B0D49F403D5626DC4E0.cache.html是不能正常显示出结果的。因为没有初始化的页面环境MyGWT.html。

12.firefox是gecko ['gekəu] n. 壁虎系列的浏览器。

可以使用它的Proxy Port方式来启用TCP/IP Monitor的view进行web访问的代理监听:

13.Eclipse Java EE IDE for Web Developers.也即:eclipse-jee-galileo-SR2-win32
---在config.ini中:
osgi.framework=file\:plugins/org.eclipse.osgi_3.5.2.R35x_v20100126.jar

14.使用firefox进行JS的调试:

poster-extension
http://code.google.com/p/poster-extension/

tamperdata
http://tamperdata.mozdev.org/

Firebug----对JS进行debug:
https://addons.mozilla.org/zh-CN/firefox/addon/1843/?src=api

密码同步sync:
https://mozillalabs.com/sync/

15.关于share包下面的类,将要做client和server端双重验证,所以,不要访问JS,不然不支持server端了;不要访问File和DB,不然不支持client端了。参见FieldVerifier的类注释:
This class is in the shared package because we use it in both the client code and on the server. On the client, we verify that the name is valid before sending an RPC request so the user doesn't have to wait for a network round trip to get feedback. On the server, we verify that the name is correct to ensure that the input is correct regardless of where the RPC originates.

16.关于GWT的配置文件,以及代码入口问题:
MyGWT.gwt.xml---》<entry-point class='org.wyang.client.MyGWT'/>--》interface EntryPoint----》void onModuleLoad();

另外,这个参数是设置compile的时候的引用到的package路径的:
  <source path='client'/> ---->org.wyang.client
  <source path='shared'/> ---->org.wyang.shared

17.常用的Widget以及主要的API:
Button
--addStyleName("sendButton");
--setEnabled(true);
--setFocus(true);
--addClickHandler(handler);

TextBox
--setFocus(true);
--selectAll();
--addKeyUpHandler(handler);

Label
--setText("");

HTML
--setText(textToServer);
--addStyleName("serverResponseLabelError");
--removeStyleName("serverResponseLabelError");
--setHTML(SERVER_ERROR);

RootPanel
--get("sendButtonContainer").add(sendButton);

DialogBox
--setText
--setAnimationEnabled(true);
--setWidget(dialogVPanel);
--hide();
--center();

VerticalPanel
--setHorizontalAlignment
--add

KeyUpEvent  --- KeyUpHandler ---event.getNativeKeyCode() == KeyCodes.KEY_ENTER
ClickEvent  --- ClickHandler

18.MyGWT.java中如果含有中文的话,需要save成UTF8编码,这样GWT编绎生成的JS中才可以正常在页面显示中文。

19.使用插件Run Web Application的功能时,Jetty是会对web.xml中的servlet进行检查的。----(Tomcat5.5不会进行检查)
-codeServerPort 9997 -port 8888

20.在进行客户端验证时,要把所用到的类的package添加到MyGWT.gwt.xml中,不然模块加载错误。(还有一个处理办法就是把这些类直接和client放在同一个包下)

21.在点击button后,要进行服务器端验证,必须要进行回调机制,不然不能生成JS代码。
常用的处理方法是:
@RemoteServiceRelativePath("checkLoginServlet")
public interface GreetService extends RemoteService{
    boolean checkLogin(String username, String password);
}

因为有了RemoteService所以studio会提示生成回调java类:  
 void checkLogin(String username, String password,AsyncCallback<Boolean> callback);
因为有了@RemoteServiceRelativePath,所以需要在web.xml中对该servlet的path进行注册:/mygwt/checkLoginServlet
public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService
这个类本质上是一个servlet,因为它实现了RemoteServiceServlet.在这个类里面可以衔接Spring + Hibernate

还有点,在使用那个回调方法时需要声明引用:
GreetServiceAsync service = GWT.create(GreetService.class);
回调中的两个API:
void onFailure(Throwable caught);
void onSuccess(T result); ----->interface AsyncCallback<T>,这就要求了那个类servlet的API必须要有返回值。

GWT开端的更多相关文章

  1. F#之旅0 - 开端

    F#之旅0 - 开端 UWP的学习告一段落,CozyRSS的UWP版本并没有做.UWP跟wpf开发几乎一模一样,然后又引入了很多针对移动设备的东西,这部分有点像android.没啥太大的意思,不难,估 ...

  2. GWT入门学习之下载安装

    1.准备 安装 jdk: 下载路径:http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-windows-i586.exe?Aut ...

  3. GWT资料收集

    1.别人的GWT笔记 http://www.blogjava.net/peacess/archive/2007/08/06/84950.html 2.GWT系统类库参考手册 http://www.bo ...

  4. GWT工程架构分析与理解

    上一篇文章中介绍了GWT技术的一些理论性的东西,涉及到GWT得一些技术原理及实现.接下来笔者将通过创建一个GWT工程去理解分析GWT工程架构.     GWT工程架构解析 笔者使用的是Eclipse插 ...

  5. GWT RPC

    GWT RPC GWT RPCRemote Procedure Calls GWT: Google Web Toolkit的缩写,有了 GWT可以使用 Java 编程语言编写 AJAX 前端,然后 G ...

  6. GWT 中日期格式化 ,处置Date

    GWT的view中不能用java原生的DateFormat 必须使用gwt封装的格式化方法,方法如下 import com.google.gwt.i18n.client.DateTimeFormat; ...

  7. GWT环境搭建--eclipse

    上面下来需求,需要用到GWT,以前没接触过,搭个开发环境研究研究 安装软件我放在百度云盘里了(其他版本自己找,我的版本 eclipse4.4 luna  gwt2.7) 链接:http://pan.b ...

  8. gwt 创建 超链接cell (HyperTextCell)

    package com.cnblogs.hooligen.client; import com.google.gwt.cell.client.AbstractCell; import com.goog ...

  9. GWT 实现文件上传和下载

    首先下载两个包 commons-fileupload-?.jar和commons-io-?.jar  将他们配置到你的项目中 先把它们放在 "项目名/war/WEB-INF/lib" ...

随机推荐

  1. ubuntu文件目录详细介绍

    /bin 二进制可执行命令 /dev 设备文件(硬盘/光驱等) /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录,下面会有以登录用户名作为文件夹名的各文件 ...

  2. 用Ajax实现自动刷新news功能

    这是Ajax应用的一个小实例:在页面中自动刷新功能,比如整个新闻页面中某一个小版块的内容,无需刷新整个页面就可以自动更新: 1.首先创建简单的页面元素: <body> <input ...

  3. Omi命令行界面omi-cli发布

    原文链接:https://github.com/AlloyTeam/omi/blob/master/docs/deep_in/cn_omi-cli.md 写在前面 通常认为,命令行界面(CLI)没有图 ...

  4. 最简单的 RabbitMQ 监控方法 - 每天5分钟玩转 OpenStack(158)

    这是 OpenStack 实施经验分享系列的第 8 篇. 先来看张图:这是 Nova 的架构图,我们可以看到有两个组件处于架构的中心位置:数据库和Queue.数据库保存状态信息,而几乎所有的 nova ...

  5. 关于开发中使用writeToFile时的注意事项

    总会有一些坑在前面等着你 我们先来看一下后台返回的部分json数据,稍后再来分析问题,仔细看一下userId和userCode两个字段,其他不用看 "list": [{ " ...

  6. JavaScript基础——兼容性、错误处理

    JavaScript基础-错误处理Throw.Try.Catch try语句执行可能出错的代码 catch语句处理捕捉到的错误 throw语句创建自定义错误语句 发生的常见的错误类型 可能是语法错误, ...

  7. Kafka Eagle 源码解读

    1.概述 在<Kafka 消息监控 - Kafka Eagle>一文中,简单的介绍了 Kafka Eagle这款监控工具的作用,截图预览,以及使用详情.今天笔者通过其源码来解读实现细节.目 ...

  8. 团队项目中js冲突

    在我们平时的项目中,特别是模块化开发中.经常会遇到一些js冲突问题,特别是当项目复杂到一定程度的时候.比如项目中引入了相当多的类库,框架以后. 那么.我们如何去避免或者解决这类问题呢? 1.避免使用全 ...

  9. nodejs学习一

    总觉得一个前端,不懂得一点后端的服务,弱弱的没有存在感,所以利用现在好好 学学有关nodejs 首先是windows上进行nodejs的全局安装 32 位安装包下载地址 : https://nodej ...

  10. HTML超文本标记语言-基础标签整理

    第一章 <META>标签: <meta http-equiv="Content-Type" Content="text/html;charset=gb2 ...