本帖最后由 xianaofei 于 2009-08-19 13:59:39 编辑

解决方案 »

  1.   

    zk是一个ajax框架,里面的全部组件都是用java实现的,用zk编写显示层和桌面程序差不多。
      

  2.   

    ZK采用AJAX机制用来实现自动的交互,并定义了基于XUL丰富的组件和标记语言。
         基于AJAX的机制包括三个部分,分别为:ZK 加载器(ZK loader),ZK AU引擎(ZK AU Engine ),和ZK客户端引擎(ZK Client Engine)。
         ZK 加载器(ZK loader):当应用启动时,加载器已经启动,当客户端发送URL请求时,加载器解释请求。
         ZK客户端引擎(ZK Client Engine):是由JavaScript语言编写的。浏览器缓存ZK客户端引擎,所以通常仅需在首次读取时设置引擎。ZK Client Engine的主要职责有:当客户触发事件时,ZK Client Engine捕捉客户端事件,将事件封装然后放入客户端事件队列(封装后的请求是一个特定格式的字符串),发送队列中的事件到服务器;当接收到服务器端的响应时,接收响应信息并解析信息(此信息为一个XML格式的串),根据解析后的数据刷新页面。
        ZK AU引擎(ZK AU Engine ):运行在服务器端,当服务器接收到客户端发送的请求(字符串),然后解析此请求,根据请求做后台处理(包括model更新,响应信息组装)。
         基于用户的请求,ZK 加载器(ZK loader)加载一个ZK页面,解释它,并将结果送到HTML页面来响应URI请求。ZK页面是用一种被称为ZUML的标记语言写成的。ZUML,就像HTML,被用来描述什么组件被创建,以及如何把它们呈现出来。这些组件一旦被创建,就会一直处于可用状态直到会话超时。
          然后ZK AU引擎(ZK AU Engine )和ZK客户端引擎(ZK Client Engine)作为投手和捕手一起工作。它们将在浏览器端发生的事件送到运行在服务器端的应用程序,然后更新浏览器段的DOM树,基于组件如何被应用程序操纵。这种方式即所谓的事件驱动编程模型。 
    执行流
    当用户在浏览器中键入一个URL或点击一个超链接时,一个请求便被送到了Web服务器,如果URI符合ZK的配置,ZK 加载器开始发挥作用 。 
    ZK 加载器(ZK loader)加载指定的页面然后解释它,以据此创建合适的组件。 
    当解释完整个页面后,ZK 加载器(ZK loader)将结果送到一个HTML页面。然后这个HTML页面被送回浏览器和ZK客户端引擎(ZK Client Engine)一起。 
    ZK客户端引擎(ZK Client Engine)位于浏览器,以监视由客户的活动触发的事件,例如挪动鼠标,或改变某个值。一旦监测到,它就通知ZK AU引擎通过发送一个ZK请求。 
    当从客户端引擎接到ZK请求后,如果有需要的话AU引擎就更新相应组件的内容。然后,AU引擎通过调用相关的事件处理程序(如果有的话)来通知应用程序。 
    如果应用程序选择改变组件的内容,添加或移动组件,AU引擎通过ZK响应(ZK responses)将更新后组件的新内容送至客户端引擎。 
    这些ZK响应实际上是一些命令,这些命令指示客户端引擎如何更新DOM树的内容。