日期:2014-05-16  浏览次数:20834 次

AjaxAnywhere源代码阅读
AjaxAnywhere主体在AAFilter中,这是一个过滤器,也是AA中的一个要类,配置文件在web.xml中。

在doFilter(。。。)方法中
(1)检查请求是否包含aaxmlrequest标志,如果没有,调用其它过滤器处理,处理完后直接返回;如果有,进行(2)

(2)设置请求编码为UTF-8,
      设置响应头部:Cache-Control=no-cache,Expires=0,Pragma=no-cache,
      包装成带缓冲的响应对象。

(3)从请求对象中取出“aazones”参数的所有值(以逗号分割),并加入到需要刷新的区域对象(以Set对象保存)中。

(4)调用其它的过滤器,处理完成后控制权返回到本过滤器

(5)如果需要重定向,则调用XMLHander重定向处理;如果不不需要,则调用XMLHandler处理需要刷新的区域。

XMLHandler类

(1)sendZones(。。。)方法:
     A)遍历每一个需要刷新的区域,进行如下处理:
        用本区域的名字作为属性生成一个新的节点<zone  name="zone1"></zone>;
        把产生的HTML内容作为子节点加入节点;
        把本区域的JS代码加入到List列表中;
        把本区域的图象加入到Set中;
        把本节点加入到文档树中;
     B)遍历每一个JS代码,进行如下处理:
        生成一个新的节点<script></script>;
        把JS代码作为子节点加入节点;
        把本节点加入到文档树中;
     C)遍历每一个图象,进行如下处理:
        生成一个新的节点<image></script>;
        把图象作为子节点加入节点;
        把本节点加入到文档树中;
     D)调用TransformerDOM树,然后响应对象输出文档到客户端。