这篇文章是转载的,原地址: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. Hadoop1.0.3环境搭建流程

    0x00 大数据平台相关链接 官网:http://hadoop.apache.org/ 主要参考教程:http://www.cnblogs.com/xia520pi/archive/2012/05/1 ...

  2. (@WhiteTaken)设计模式学习——建造者模式

    Builder模式,也就是建造者模式或者生成器模式,是GoF提出的23种设计模式的一种. 这种模式是用来隐式的创建复合对象而提出来的. 创建复合对象的过程,不在主客户端显示. 下面直接上代码.以修建房 ...

  3. 这是一款可以查阅Github上的热门趋势的APP

    随时查阅当前Github上的热门趋势.使用Material Design设计风格,和流行的MVP+Retrofit+RxJava框架.数据抓取自https://github.com/trending ...

  4. API练习_图形

    #include<windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINS ...

  5. C#推送RTMP到SRS通过VLC进行取流播放!!

    前面一篇文章简单的介绍了下如何利用SRS自带的播放地址进行观看RTMP直播流,也就是说是使用SRS的内置demo进行Test,但是进行视频直播肯定不可能使用那样的去开发,不开源的东西肯定不好用.由于在 ...

  6. java8-lamba表达式的使用-遁地龙卷风

    (-1)前言 学习lamba表达式是十分重要的,你会发现java变的可爱多了. (0)函数式接口 只有一个方法的接口称为函数式接口 JButton jButton = new JButton(&quo ...

  7. BZOJ 1050: [HAOI2006]旅行comf (并查集 或 单调队列)

    这是建空间后做的第一道题啊= =好水 排序,枚举最小边,然后并查集求出联通时的最大边 或者排次序,从小到大插边,如果插边时最小的边拿掉不会使s与t不联通,就删去。 code: #include< ...

  8. 获取元素最终的background-color

    通常我们都会先获取元素,然后得到style对象获取对应的css属性值: 下面,假设我定义一个div并在css中给定了指定的background-color: 这里并没有考虑!important/内联的 ...

  9. Express4.x动态的销毁或者替换中间件(app.unuse)

    需求描述 expres4.x托管静态资源时以中间件的方式将server-static挂载到app上,正常的使用没有问题,但是有时候我们需要动态的托管一些静态资源,也就是静态资源的目录不确定的时候该怎么 ...

  10. .Net程序员学用Oracle系列(20):层次查询(CONNECT BY)

    1.层次查询语句 1.1.CONNECT BY 语法 1.2.CONNECT BY 示例 2.层次查询函数 2.1.SYS_CONNECT_BY_PATH 2.2.WMSYS.WM_CONCAT 2. ...