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树,然后响应对象输出文档到客户端。