




免费预览已结束,剩余31页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GWT基础 作者 涂科 GWT概述 GWT是GoogleWebToolkit的简称GWT是一个以Java语言为工具 以类似Swing的方式编写UI组件 之后通过GWTCompiler编译为JavaScritp和HTML在客户端浏览器中运行的一个开发工具和编程模型 GWT的构成 JavaToJSCompiler 功能 把Java代码转换成JavaScript代码位置 com google gwt dev GWTCompiler注意 a 只能编译Java源码 而不能编译Java二进制码 b 不支持部分JDK1 5的特性 例如 generics enums等 仅仅限与要被编译的代码 服务器端程序不受限制 JSNI 全名 JavaScriptNativeInterface功能 Java代码中调用JavaScript程序原理 通过JSNI GWTCompiler能够把NativeJavaScript与从Java生成的JS代码合并 JSNI例 publicnativeintaddTwoNumbers intx inty varresult x y returnresult JRE简化库 在GWT应用程序里 常用而有能够使用的JRE类如下图所示 A Classinjava langpackageB Classinjava utilpackage Classinjava langpackage Classinjava utilpackage 与JRE的细微差别 HashMap的KEY不能使用Double和FloatString replaceAll String replaceFirst 和String split与标准JAVA的实现有差异StringBuffer int 和StringBuffer 一样不支持Stack TraceVector没有容量自增长功能 也没有下标有效性检查 GWT页面元素库 Web控件是GWT表示层的核心 通过使用GWT提供的Web控件可以创建丰富的客户端画面 GWT的web组件类型 Widget 一些用户控件 例如 BUTTON TEXTBOX TEXTAREA CHECKBOX等 元素 Panel 放置控件的容器 例如 MenuBar TabPanel等 容器 Widget例 Panel例 Internationalization国际化 传统项目开发中使用属性文件来存放一些可用Constants和Messages弊端 不支持类型 所有的内容都是String不能在编译期发现 未定义的属性 GWT的处理机制 编译期静态的包含 通过实现Constants和Messages的接口实现编译期中包含属性设置运行期动态的包含 通过使用GWT的Dictionary类来实现 操作步骤 第一步 建立一个集成于Constants的接口第二步 根据接口中定义的方法定义一个跟接口同名的属性文件第三步 获取文件中定义的内容 建立一个集成于Constants的接口 publicinterfaceMySettingsextendsConstants StringwelcomeMessage StringlogoImage 定义与接口同名的属性文件 welcomeMessage Welcometomybook 0 1 logoImage images logo jpg 获取文件中定义的内容 MySettingssetting MySettings GWT create MySettings class setting welcomeMessage setting logoImage GWT编译器结合接口文件和属性文件编译出了一个实现类 通过这个引用去访问实现了的接口方法 RPC远程过程调用 全名 remoteprocedurecallGWT的服务端与客户端的交互 客户机代码与运行在Web服务器上的Service进行通信 与JavaRMI使用的方法类似 这意味着只需要编写服务的服务器端实现和两个接口即可 Service的构成 服务器上负责处理数据的对象在GWT中叫做Service每个Service有三个类组成 服务方法定义接口 Service 异步调用接口 ServiceAsync 服务器方法实现类ServiceImpl 远程过程调用例 服务方法定义接口publicinterfaceLoginServiceextendsRemoteService publicbooleanlogin LoginSOlogin throwsApplicationException 异步调用接口publicinterfaceLoginServiceAsync voidlogin LoginSOlogin AsyncCallbackasync 服务器方法实现类publicclassLoginServiceImplextendsRemoteServiceServletimplementsLoginService publicbooleanlogin LoginSOlogin throwsApplicationException returntrue 其中前两个接口在client包内部 最后一个实现在server包内部 远程过程调用例 LoginServiceAsyncourInstance LoginServiceAsync GWT create LoginService class 获得服务器方法的调用接口 ServiceDefTarget ourInstance setServiceEntryPoint GWT getModuleBaseURL LoginService 设置服务位置ourInstance login loginSO newAsyncCallback 远程调用服务器上的方法 注意这里是异步调用publicvoidonFailure Throwablecaught 调用出错 或者调用方法抛出异常的时候调用的方法if caughtinstanceofInvocationException systemexception else Window alert GWTShowConstants Messages constants maxQueryCount aplicationexception publicvoidonSuccess Objectresult 调用成功返回时候调用的方法Window alert success 其他RPC方法 使用RequestBuilder创建提交到服务器的request RequestBuilder例 Stringurl service search RequestBuilderrb newRequestBuilder RequestBuilder GET url try Requestrequest rb sendRequest term GWT in Action newRequestCallback publicvoidonResponseReceived Requestreq Responseres processhere publicvoidonError Requestreq Throwableexception handleerrorhere catch RequestExceptione handleexceptionhere 参数和返回值序列化类型 GWT中的RPC调用是在JavaScript代码和Java代码之间进行的 所以GWT集成了对象序列化机制 用它来协调跨语言分界 languagedivide 的参数和返回值 GWT可序列化类型 可序列化的类型包括 1 原始类型 例如 char byte short int long boolean float double 2 String java util Date 或者原始类型的包装类型 例如 Character Byte Short Integer Long Boolean Float orDouble 3 可序列化类型数组 包含 4 和 5 定义的类型 4 用户定义的可序列化类型 5 该类型至少有一个可序列化的子类型 GWT的其他特性 GWT的XML解析器浏览器的history对JUnit的支持 GWT应用程序的运行方式 HostedModelWebModel HostedModel 在HostedModel方式下 Java程序并不会被编译成JavaScript GWT只是创造了一个类似浏览器的环境 直接运行使用GWT开发的程序 这种模式最具生产力 这种模式下可以Debug所有的Java代码 所以开发环境通常使用HostedModel 但是真正的程序执行不使用这种模式 WebModel 就是将使用GWT编写的Java程序整整编译成JavaScript 在Web容器上运行 使用浏览器访问的模式 这种方式只有在测试或者运行的时候才使用 每次对Java类的修改必须重新编译这些Java类 之后重新部署应用 所以生产力比较低 GWT的分支 GWTGWT EXTMYGWT GWT GWT EXT MyGWT比较 G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育健康视角下的营养与运动科学融合研究-洞察阐释
- 合肥共达职业技术学院《足球俱乐部》2023-2024学年第二学期期末试卷
- 甘肃农业大学《高等分子生物学》2023-2024学年第二学期期末试卷
- 艺术市场数据分析-洞察阐释
- 昆明冶金高等专科学校《酒店服务理念精萃》2023-2024学年第二学期期末试卷
- 宜宾学院《药品质量控制》2023-2024学年第二学期期末试卷
- 冀中职业学院《小型合奏(唱)》2023-2024学年第二学期期末试卷
- 口腔医院运营管理方案
- 湖北商贸学院《幼儿歌曲弹唱二》2023-2024学年第二学期期末试卷
- 智能城市中的智能城市可持续发展研究-洞察阐释
- 不稳定型心绞痛护理诊断及护理措施
- 药品配送运输流程图解
- 腹膜透析围手术期的护理
- 虚拟实验在高中生物学实验教学中的应用研究
- 糖尿病足护理疑难病例讨论
- 频繁停电培训课件
- 2025年度数据中心制冷设备采购与安装施工合同范本
- 2025年广西宏桂资本运营集团招聘笔试参考题库含答案解析
- 英语中国文化
- 防水工程改造翻新合同
- 心脏骤停病人的抢救与护理
评论
0/150
提交评论