GWT应用程序有两种方式运行:
Hosted Model
在Hosted Model方式下,Java程序并不会被编译成JavaScript,GWT只是创造了一个类似
浏览器的环境,直接运行使用GWT开发的程序。这种模式最具生产力(这种模式下可以Debug所有的Java代码),
所以开发环境通常使用Hosted Model,但是真正的程序执行不使用这种模式。
Web Model
就是将使用GWT编写的Java程序整整编译成JavaScript,在Web容器上运行,使用浏览器
访问的模式,这种方式只有在测试或者运行的时候才使用,每次对Java类的修改必须重新编译
这些Java类,之后重新部署应用。所以生产力比较低。
用命令projectCreator -eclipse hello (GWT帮我们生成一个eclipse工程的基本框架);
用命令applicationCreator -eclipse hello com.wly.client.DemoApplication(gwt帮我们生成一个GWT工程所需要的所有支持文件);
applicationCreator和projectCreator的区别是
applicationCreator创建了src目录和Demo代码,projectCreator不创建Demo代码,但是创建src目录和test目录。
applicationCreator创建了启动脚本GWTLogon-shell.cmd和GWT编译脚本GWTLogon-compile.cmd,而projectCreator不创建。
applicationCreator创建了eclipse launch文件,而projectCreator创建.classpath和.project文件。
通常情况下,我们先使用projectCreator创建按project,projectCreator创建的工程可以轻松的import到eclipse中,
之后我们使用applicationCreator创建需要的Java示例代码,eclipse launch文件,启动脚本和编译脚本
命令列表
projectCreator
生成基本项目框架,可以选择使用eclipse或者使用ant构建文件
applicationCreator
生成代码示例和一个可运行的应用程序
junitCreator
生成一个JUnit测试Case
i18nCreator
生成一个i18n属性文件和对应的Javascript脚本。
benchmarkViewer
显示benchmark结果
功能介绍(远过程调用RPC)
体系结构
GWT应用中页面一旦加载,就再也不会向服务器请求HTML内容,所有的画面迁移,转换都在客户端进行,但是数据还是会向服务器提交,或者从服务器获取。
服务器上负责处理数据的对象在GWT中叫做Service,每个Service有三个类组成:服务方法定义接口(Service),异步调用接口(ServiceAsync)和服务器方法实现类ServiceImpl。
以Login为例子说明:
// 服务方法定义接口
public interface LoginService extends RemoteService {
public boolean login(LoginSO login) throws ApplicationException;
}
// 异步调用接口
public interface LoginServiceAsync {
void login(LoginSO login, AsyncCallback async);
}
// 服务器方法实现类
public class LoginServiceImpl extends RemoteServiceServlet implements LoginService {
public boolean login(LoginSO login) throws ApplicationException {
...
return true;
}
}
其中前两个接口在client包内部,最后一个实现在server包内部。
Hosted Model
在Hosted Model方式下,Java程序并不会被编译成JavaScript,GWT只是创造了一个类似
浏览器的环境,直接运行使用GWT开发的程序。这种模式最具生产力(这种模式下可以Debug所有的Java代码),
所以开发环境通常使用Hosted Model,但是真正的程序执行不使用这种模式。
Web Model
就是将使用GWT编写的Java程序整整编译成JavaScript,在Web容器上运行,使用浏览器
访问的模式,这种方式只有在测试或者运行的时候才使用,每次对Java类的修改必须重新编译
这些Java类,之后重新部署应用。所以生产力比较低。
用命令projectCreator -eclipse hello (GWT帮我们生成一个eclipse工程的基本框架);
用命令applicationCreator -eclipse hello com.wly.client.DemoApplication(gwt帮我们生成一个GWT工程所需要的所有支持文件);
applicationCreator和projectCreator的区别是
applicationCreator创建了src目录和Demo代码,projectCreator不创建Demo代码,但是创建src目录和test目录。
applicationCreator创建了启动脚本GWTLogon-shell.cmd和GWT编译脚本GWTLogon-compile.cmd,而projectCreator不创建。
applicationCreator创建了eclipse launch文件,而projectCreator创建.classpath和.project文件。
通常情况下,我们先使用projectCreator创建按project,projectCreator创建的工程可以轻松的import到eclipse中,
之后我们使用applicationCreator创建需要的Java示例代码,eclipse launch文件,启动脚本和编译脚本
命令列表
projectCreator
生成基本项目框架,可以选择使用eclipse或者使用ant构建文件
applicationCreator
生成代码示例和一个可运行的应用程序
junitCreator
生成一个JUnit测试Case
i18nCreator
生成一个i18n属性文件和对应的Javascript脚本。
benchmarkViewer
显示benchmark结果
功能介绍(远过程调用RPC)
体系结构
GWT应用中页面一旦加载,就再也不会向服务器请求HTML内容,所有的画面迁移,转换都在客户端进行,但是数据还是会向服务器提交,或者从服务器获取。
服务器上负责处理数据的对象在GWT中叫做Service,每个Service有三个类组成:服务方法定义接口(Service),异步调用接口(ServiceAsync)和服务器方法实现类ServiceImpl。
以Login为例子说明:
// 服务方法定义接口
public interface LoginService extends RemoteService {
public boolean login(LoginSO login) throws ApplicationException;
}
// 异步调用接口
public interface LoginServiceAsync {
void login(LoginSO login, AsyncCallback async);
}
// 服务器方法实现类
public class LoginServiceImpl extends RemoteServiceServlet implements LoginService {
public boolean login(LoginSO login) throws ApplicationException {
...
return true;
}
}
其中前两个接口在client包内部,最后一个实现在server包内部。