《2022年ZK框架学习总结 .pdf》由会员分享,可在线阅读,更多相关《2022年ZK框架学习总结 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、文件名ZK框架学习总结作者剑儿文档版本1.1 最后修改日期2010-05-20 ZK 框架学习总结版本号 1.0编 写 人:剑儿编写时间: 2010-05-19 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 修订控制页编号文档版本修订章节修订原因修订日期修订人1 1.0 全部创建文档2010-05-19 剑儿2 1.1 第 1 章增加 ZK不足2010-05-20 剑儿3 4 5 6 名师资料总结 - - -精品资料欢迎下载
2、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 目录ZK 框架学习总结 . 11ZK 框架简介 . 32安装部署开发环境. 42.1工具及安装 . 42.2ZK 环境的配置 . 53快速搭建页面. 74帮助文档 . 85没有 Javascript 的事件响应 . 85.1组件的事件 . 85.2组件与控制器. 106搭建一个完整的WEB 应用 . 106.1整合持久层 . 106.2整合 Spring . 101ZK 框架简介ZK框架是一个用JAVA实现的简单但是功
3、能强大的表现层框架。它包括了一个基于Ajax的事件驱动引擎、这也是它的最大特色。可以做到没有JavaScript,只通过ZUML(ZK User Interface Markup Language)这种标识语言即可做到界面创建和事件响应。ZK的实现完全用java实现,开发过程中不会有任何的JavaScript代码,但是通过将zul 文件( ZK的源文件,类似于jsp 文件)通过ZK引擎编译后查看页面源代码,结果还是可以看到, ZK实现的本质还是通过JavaScript+CSS来处理异步请求的。组件是 ZK中最常见的元素。有点类似于JAVA Swing 或者 VB这样的基于组件的编程。结合 ZK
4、 Studio ,可以达到可视化和动态地查看页面效果。特征 :1.它是一个表现层工具。 可以与 hibernate, spring等结合构建一个完整的WEB 应用。2.以服务端为中心的框架。它封装了Ajax 的后台处理技术。服务端由两个重要部分实现: ZK加载器, ZK异步更新引擎。前者负责解析URL请求,生成HTML 页面;后者负责监听和处理客户端的Ajax 请求,同时更新ZK组件的属性,然后将Ajax 响应发回给客户端。3.基于组件的GUI。页面的可视部分都是由组件构成。类似于 HTML 标签, 但是比 HTML标签更灵活。不足之处:1.ZK与 JAVA结合紧密。由于ZK的组件都是由JAV
5、A实现,所以对组件的控制也仅限于用 JAVA语言。无法与控制层解耦。2.学习资料和文档比较少。最全面的ZK应用其实还是官方的DEMO 。连 ZK框架Ajax 开发实践 一书都是用的官方例子。所以对有些事件或者属性只有自己探索。3.ZK 的测试比较薄弱。对页面无法用工具进行测试。只能用手动测试。调试也不方便。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 2安装部署开发环境2.1 工具及安装需要安装的工具有JDK、Tomcat(
6、或者其他服务器) 、My Eclipse (或者 Eclipse) 、 ZK开发包、 ZK Studio 。JDK、Tomcat、My Eclipse 安装都不用介绍了,主要介绍ZK 相关的部门。我的环境是JDK 1.6.0_16+Tomcat 6+My Eclipse 6.0 。准备工作:下载 ZK 包和 demo。http:/www.zkoss.org/download/zk.dsp 。在 Windows 下开发选择 zk-bin-5.0.2.zip,Linux 下选择 zk-bin-5.0.2.tar.gz。下载好后还需要下载一个 demo包。这个demo包里面包含了一些xml 模板,创
7、建ZK页面时可以根据模板快速生成。demo下载选择zk-demo-5.0.2.zip。然后下载ZK Studio 。ZK Studio是 My Eclipse一个插件。提供了对ZK文件的时时查看和组件的可视化编辑以及一些通用页面原型。最好还是下载这个插件,方便开 发 。 这 个 插 件 可 在 线 安 装 或 者 直 接 下 载 。 安 装 步 骤 可 参 考 页 面 :http:/www.zkoss.org/download/zkstudio.dsp 。安装好后的界面如下:图 1 ZK Studio界面 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
8、 - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 图 2 ZK Studio界面 2 2.2 ZK 环境的配置解 压zk-bin-5.0.2.zip, 创 建 用 户 自 定 义 库 : 在My Eclipse里 面 选 择windows-Preferences-JAVA-Build Path-User Libraries。添加 3 个用户库。名字随便取,可以分别叫:ZK Ajax Frame、ZK Ajax Framework Extendsion以及 ZK Ajax Framework Forge Libr
9、ary。分别对应zk-bin-5.0.2目录结构中dist下的lib、 lib/ext以及lib/zkforget中的 jar包。配置好后的用户库如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 图 3 自定义的用户库添加 xsd 到用户 xml catalog entry 里。 这是为了确保可以更好的地使用My Eclipse XML Editor的功能。打开window-preferences-My Eclipse-
10、Files and Editors-XML-XML Catalog。添加 zk-bin-5.0.2/dist/xsd/zul.xsd。添加xml 文件模板:将zkdemoWebContentWEB-INF下的lang-addon.xml、portlet.xml, zk.xml和web.xml四 个 文 件 复 制 到My Eclipse安 装 目 录 下 的myeclipseeclipsepluginscom.genuitec.eclipse.wizards_6.0.1.zmyeclipse601200710 templatesxml。 文 件 夹 名 字 可 能 因 为My Eclipse版
11、 本 不 同 而 不 同 。 只 要 以com.genuitec.eclipse.wazardsXXX这样开头的文件夹就行。然后将这四个文件分别改名为:LangAddon.vtl、Portlet.vtl、ZK.vtl 、ZKWeb.vtl 。打开四个文件, 将这一行都改成。继续在这个 xml 文件夹里面新建一个名为ZUL.vtl的文件。内容如下:修改My Eclipse安装目录下的myeclipseeclipsepluginscom.genuitec.eclitemplates.xml。在 后面添加如下代码: template context=com.genuitec.eclipse.wiza
12、rds.xml script=templates/xml/LangAddon.vtl 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - name=XML template for a lang-addon.xml file for ZK/ 添加新的文件类型。 打开 window-preferences-general-content types ,给 Java Source File添加 *.zs ,给 XML添加 *.zul,
13、 给 JSP添加*.dsp ,给 HTML添加 *.zhtml。到此,ZK环境完全搭建完成。开发好的ZK应用可以直接打成war 包进行部署。十分地简单。3快速搭建页面有两种方式创建ZK Project 。 第一种方式是直接在ZK Welcome Page 里面新建一个ZK工程:,这样不用再添加ZK 库。第二种方式是先创建一个Web Project,然后在 Build Path 里面添加刚才添加的三个User Libraries 。然后在 WebRoot 里面添加 zul 文件即可。添加zul 文件要选择新建XML Advanced Tempaltes 文件。打开 zul 文件可以选择Open
14、with Zul Editor 。这样便可以利用zk studio 的可视化编程进行开发。除了 ZK 自己提供的一些组件外,html 的标签在 ZK 中完全可以继续用。但是为了避免 ZK 解释 HTML 标签,通常要使用将 HTML 标签围入其中。换言之,他们并不是子组件。而是被存储在content 属性内。组件可以从直接拖拉进代码区,然后可以在中查看和设置组件支持的所有属性和事件。其特点就是高效地组建页面。如果不添加任何JAVA 代码,那么创建一个页面的效率不亚于直接用Axure 创建界面原型。图4 是一个界面demo。无任何 js 和 CSS 代码。当然, ZK 框架并不排斥使用CSS 代
15、码。利用style 属性可以设置 CSS 样式,还可以通过加载 CSS 文件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 图 4 快速创建页面范例4帮助文档最 好 的 帮 助 文 档 其 实 是zkoss官 网 的 一 些 文 档 。 比 如 : 开 发 手 册(http:/zh.zkoss.org/doc/devguide/index.html ) 。但是对于开发人员来说,官方的帮助文档其实还不够的。 ZK 总提供上百个
16、组件和13 个指令。每个组件都会有10 到 60 个不同的属性和事件响应。所以,对于这些属性及用法没有一个好的类似java api 文档那样的东西,实在是 会 不 知 所 措 。 所 以 在zkoss官 方 还 提 供 了zkoss组 件 的java api(http:/www.zkoss.org/javadoc/latest/zk/ ) ,方便开发人员5没有 Javascript 的事件响应5.1 组件的事件每个组件都支持一些事件。如onClick 、onOK,onClose 等。以下是window 组件所支持的事件:名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
17、- - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 图 5 window 组件支持的事件在 ZK异步更新引擎的支持下,组件的属性可以被动态改变。首先获得组件对象,然后设置值。获得组件可以通过JAVA代码或者EL表达式。同一ID 空间中的可以用getFellow(组件 id ) ,还有一种方法是利用org.zkoss.zk.ui.api包中的Path 类可以很方便地获取组件。 Path.getComponent(组件路径 )。如获取以下页面的label组件的 value 值可以这样写: 跨页面的组件访问可
18、以用/ 表示当前桌面。如要在page2 中访问page1 的 id为 winA 的window 组件,可以这样写Path.getComponent(“/page1/winA”) 。当然, ZK也不排除使用javascript。如: function testAlert() alert( 调用 javascript成功! ); 事件还可以在JAVA代码中进行注册。注册后与直接写在zul 页面中的效果是一样的。比如我们可以先定义一个事件类:public class MyListener implements EventListener Override public void onEvent(Ev
19、ent event) throws Exception / TODO add some methods , 然后可以在另外一个类中注册它。public class ShowMessage extends Window public void onCreate() throws InterruptedException /does initialization getFellow(btnAddUser).addEventListener(onClick, new MyListener(); 这样我们就可以通过use=ibatis.ShowMessage来调用 MyListener里面定义的一些方
20、法了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 5.2 组件与控制器将组件和组件的控制代码最好进行分离。利用组件的use 或者 applay 属性将 JAVA代码和zul页 面 进 行 关 联 。 如 : 或 者 。我们知道,一个经典的MVC 框架中,视图,控制器和模型都是必须要有的。在一个WEB工程中 DAO层的引入比较容易,比如说hibernate或者说淘宝现在用的比较多的iBatis。而控制器从何而来。视图如何与控
21、制器互相传递数据?这里就用到了zul 页面和 java 代码的分离。分离出java 代码后, java 代码可以很容易与DAO 层打交道,而获取视图层的数据也可以轻松通过getFllow获取到组件进行操作。这样MVC 三层便实现了。另外,在Web工程中还可以配置Spring 进行类管理。6搭建一个完整的WEB 应用6.1 整合持久层要想程序与数据库打交道,有很多种方式。 直接写 JDBC 当然是最笨的一种,现在淘宝的 JAVA 应用普遍采用iBatis 作为持久层,没有采用hibernate 是因为考虑到hibernate 的效率问题,所以我也试着将iBatis 配置进工程里面。首先当然是有一
22、个ZK 的工程。 参照前面第3 章的内容。 在 My Eclipse 里面新建好一个Web 工程。 然后在 Build Path 里面配置需要的包。 这里我用到的是MySQL 的 JDBC 包和 iBatis的包。都加入到Build Path 里面:。 然后进行 iBatis 的配置。要 使iBatis跑 起 来 , 至 少 需 要3 个 配 置 文 件 。SqlMap.properties用来配置数据库连接的相关信息。如用户名,密码,连接字符串等。SqlMapConfig.xml用来指定数据源、SqlMap.properties的位置和用到的sqlMap 。而这个User.xml 就是一个s
23、qlMap。用来配置sql 语句、返回类型,传入参数和名字的。在sqlMap类里面就通过名字对sql 语句进行调用。一切配置好后就可以开始正式编码了。6.2 整合 Spring 在 MyEclipse 里面添加Spring 相当容易。直接在工程上点右键,选择My Eclipse-Add Spring Capabilities 。这样就将Spring 的包引入了进来,并且自动生成了Spring 的配置文件:applicationContext.xml 。在 applicationContext.xml里面便可以进行bean的配置。更多Spring的用法可以参照相关的资料。在此便不多说。通过配置iBatis 和 Spring 后便可分层对一个Web 应用进行开发了。 JAVA 代码处理业务逻辑,充当控制层。ZK 负责界面展示。iBatis 负责持久层。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -