ZK学习实践(一)

xiaoxiao2026-08-10  2

ZK是一个深受欢迎的开源AJAX框架,由台湾一家软件公司开发。它是事件驱动(event-driven)、基于组件(component-based)的。ZK 包括一个基于AJAX 事件驱动的引擎(engine),一套丰富的XUL 和XHTML,以及一种被称为ZUML(ZK User Interface MarkupLanguage,ZK 用户界面标记语言)的标记语言。它提供的非常丰富的组件,能够与Ext相媲美。 [color=red]一、快速开始[/color] [b]1、下载ZK:[/b] ZK的官方网站 http://zh.zkoss.org 可以下载最新的ZK开发包,目前的最新版为3.6.1,2009.04.29发布。本文就以3.6.1版本讲解。 [b]2、拷贝所需的核心包及依赖包:[/b] 将 dist/lib/ 下的所有.jar文件及dist/lib/ext下所有.jar文件全部拷贝至项目lib目录中(不要包含dist/lib/zkforge目录下的jar包)。 除了ZK本身的核心jar之外,还有bsh,poi,groovy等第三方依赖jar。这些第三方jar被ZK集成后,我们可以方便的扩展我们的应用。 下面是对jar包的一些简单说明: ZK核心jar: zcommon.jar、zcommons-el.jar、zhtml.jar、zk.jar、zkex.jar、zkmax.jar、zkplus.jar、zml.jar、zul.jar、zweb.jar 依赖jar: bsh.jar: BeanShell是一个小型的,免费的,可嵌入式的,具有面向对象脚本语言特性的Java代码解释器。它能执行标准的Java语句和表达式,还自带简单的脚本命令和语法 commons-*:apache提供的一系列基础而常用的功能类库,如collections、fileupload、io、logging等 groovy.jar:它是一种基于JVM的动态语言,结合了Python、ruby等动态语言的强大特性,它的源码可以编译为标准的java字节码文件 itext.jar:一个快速产生PDF文件的jara类库 jasperreports.jar:基于java的开源报表引擎,能够支持PDF、HTML、XLS、XML、CSV等格式 jcommon.jar:一个java基础框架,提供了许多的基础功能,包括文本工具类(text utilities),用来显示关于应用程序信息的用户界面类, 布局定制管理器,一个日期选择面板, 序列化工具类, XML解析器支持类等 jfreechart.jar:用来制作图表的java开源框架,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。 js.jar:Mozilla提供的一种动态解释javascript的框架 jxl.jar: JavaExcelAPI(JXL)是一个成熟,开源的Excel电子表格读取,修改,写入的项目 jython.jar:Jython是Python的纯Java实现。她无缝地结合了Java类与Python,使用户能以Python语言的语法编写在Java虚拟机上运行的软件,Jython同时拥有解释器和编译器,使其无需编译就可以测试程序代码。 mvel.jar:MVEL是一种用于Java应用程序,类似于OGNL的表达式语言。MVEL不仅非常小和敏捷,而且它的语法易于阅读与EL或OGNL比起来更像Java ognl.jar:一种功能强大的表达式语言,被许多开源框架所引用 poi:jar:一种读写excel、word文档的框架 [b]3、配置核心servlet[/b] 在web.xml中配置如下两个servlet: <servlet> <servlet-name>ZK</servlet-name> <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class> <init-param> <param-name>update-uri</param-name> <!-- name固定为update-uri,value为DHtmlUpdateServlet绑定的url --> <param-value>/zkdemo</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ZK</servlet-name> <url-pattern>*.zul</url-pattern> </servlet-mapping> <servlet> <servlet-name>ZK-update</servlet-name> <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ZK-update</servlet-name> <url-pattern>/zkdemo/*</url-pattern> </servlet-mapping> [b]4、从helloworld开始:[/b] <?page title="new page title" contentType="text/html;charset=UTF-8"?><zk><window title="登录" border="normal" width="360px" mode="overlapped" position="center" apply="com.cwq.zk.LoginService" > <grid> <columns sizable="false"> <column /> <column width="240px"/> </columns> <rows> <row> <label value="用户名"/> <textbox id="txtName"/> </row> <row> <label value="密码"/> <textbox id="txtPwd" type="password"/> </row> <row spans="2"> <div width="95%" align="right"> <button label="登录" forward="onLogin" /> <!-- 点击将异步调用com.cwq.zk.LoginService类的onLogin方法 --> <button label="取消" forward="onCancel" /> </div> </row> </rows> </grid></window></zk> package com.cwq.zk;import org.zkoss.zk.ui.util.GenericAutowireComposer;import org.zkoss.zul.Textbox;public class LoginService extends GenericAutowireComposer { private Textbox txtName;//对应zul页面的名为txtName的Textbox组件 public void onLogin() { alert("Hi! " + txtName.getValue()); }} 页面效果: [img]/upload/attachment/109237/549b2e7b-4ceb-30eb-8378-5e9fa389fe66.jpg[/img] 点击登录: [img]/upload/attachment/109240/662109e9-5936-3547-b86b-d77b54874760.jpg[/img] [color=red]二、基础知识[/color] [b]1、ZK概览[/b] ZK框架大致分为三大块:ZK 加载器(ZK loader),ZK AU 引擎(ZKAU Engine )和ZK 客户端引擎(ZK Client Engine)。ZK 加载器和ZK AU 引擎位于服务器端, ZK 加载器:主要目的是加载zul页面解释它,并创建页面中所有组件,如textbox、lable等都是组件。 ZK AU 引擎:AU即Asynchronous Update异步更新,主要目的是接受ZK请求(ZK请求是一种特殊的ajax请求),并发送客户端响应。它还负责更新组件的内容及调用服务端事件处理程序。 ZK 客户端引擎:由javascript编写,浏览器缓存ZK客户端引擎,通常仅需在首次读取时设置引擎。主要用来捕捉客户端事件,一旦捕捉到,则向服务端发起ZK请求。 [b]2、zul页面执行流程:[/b] A. 当用户在浏览器中键入一个URL或点击一个超链接时,一个请求便被送到了Web服务器,如果URI符合ZK的配置(即DHtmlLayoutServlet绑定的url),ZK 加载器响应这一请求。 B. ZK 加载器(ZK loader)加载指定的页面然后解释它,以据此创建合适的组件。 C. 当解释完整个页面后,ZK 加载器(ZK loader)将结果送到一个HTML页面。然后这个HTML页面和ZK客户端引擎一起被送回浏览器。 D. ZK客户端引擎(ZK Client Engine)坐落在浏览器,以监视由客户的活动触发的事件,例如挪动鼠标,或改变某个值。一旦监测到,它就通知ZK AU引擎(通过发送一个ZK请求)。 E. 当从客户端引擎接到ZK 请求后,如果有需要的话AU 引擎就更新相应组件的内容。然后,AU 引擎通过调用相关的事件处理程序(如果有的话)来通知应用程序。 F. 如果应用程序选择改变组件的内容,添加或移动组件,AU 引擎通过ZK 响应(ZKresponses)将更新后组件的新内容送至客户端引擎。 G. 这些ZK 响应实际上是一些命令,这些命令指示客户端引擎如何更新DOM 树的内容。 起步教程就到这里,在以后,我会深入介绍ZK,敬请关注。 相关资源:ZK所需jar包
转载请注明原文地址: https://www.6miu.com/read-5050997.html

最新回复(0)