ZK是一个深受欢迎的开源AJAX框架,由台湾一家软件公司开发。它是事件驱动(event-driven)、基于组件(component-based)的。ZK 包括一个基于AJAX 事件驱动的引擎(engine),一套丰富的XUL 和XHTML,以及一种被称为ZUML(ZK User Interface MarkupLanguage,ZK 用户界面标记语言)的标记语言。它提供的非常丰富的组件,能够与Ext相媲美。
一、快速开始
1、下载ZK:
ZK的官方网站 http://zh.zkoss.org 可以下载最新的ZK开发包,目前的最新版为3.6.1,2009.04.29发布。本文就以3.6.1版本讲解。
2、拷贝所需的核心包及依赖包:
将 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文档的框架
3、配置核心servlet
在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>
4、从helloworld开始:
<?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());
}
}
页面效果:
点击登录:
二、基础知识
1、ZK概览
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请求。
2、zul页面执行流程:
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,敬请关注。
- 大小: 57.4 KB
- 大小: 61 KB
分享到:
相关推荐
zk 学习资料 第一部分 zk 学习资料 第一部分
学习zk的一个框架展示文档。里面含有zk的安装组件以及studio,教你如何安装zk,如何使用zk,是开始学习zk 的一个好文档。
ZK入门学习资料:ZK实例学习ZK入门学习资料:ZK实例学习ZK入门学习资料:ZK实例学习
ZK_学习总结100207.doc 2.8m 的word学习文档 ,ZK学习的好帮手
ZK框架学习总结.pdf
zk学习文档 学习新的框架zk学习文档 学习新的框架zk学习文档 学习新的框架zk学习文档 学习新的框架
zk框架的入门介绍,刚开始学习和接触zk框架的伙伴可以看看,不错的资料
ZK学习的帮手,简要介绍ZK学习的步骤。
ZK资料学习zk框架的助手,带你步入zk的殿堂。。。。。
zk一个简单易学的mvc框架,里面有现成的demo,可快速上手,搭建环境!
ZK框架是一个用JAVA实现的简单但是功能强大的表现层框架。它包括了一个基于Ajax的事件驱动引擎、这也是它的最大特色。可以做到没有JavaScript,只通过ZUML(ZK User Interface Markup Language)这种标识语言即可做到...
zk 6 学习大全,包括安装文档,开发配置,参考手册,无论是学习还是开发都有帮助
SIMPLY RICH ZKTM The Developer's Reference Version 3.0.1 ZK的介绍,功能、组建的使用...
从PAXOS到ZK分布式一致性原理与实践 从PAXOS到ZK分布式一致性原理与实践
ZK学习总结,包括API、开发手册、讨论区网址等,适合新手学习
zk 学习资料 第二部分
zk是一个以java为后台的web框架,扩展性好,支持javascript等脚本
ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
zk后台api很全的,对于学习ZK很有用的。
ZK是一个事件驱动(event-driven)的,基于组件(component-based)的,用以丰富网络程序中用户界面的框架。