AjaxAnywhere, 是能够把任何一套现存的JSP组件转换成AJAX感知组件而不需要复杂的JavaScript编码.它利用标签把Web页面容易地区划成几个区域,其后应用AjaxAnywhere来刷新那些急需被更新的区域. AjaxAnywhere 并不需要大规模批改原来的既有代码. 相对来说, 比较简略兑现. 而且并没有把你的程序和AJAX绑定到一行. 即使是一些不支持AJAX的浏览器,也还可以通常地工作。 下载地址
AjaxAnywhere运用"分区刷新"的思路,其工作原理如次。
★ 运用AjaxAnywhere自定义标签库将一个Web页面区划为几个可满载的区域(reload-capable zones)。
★ 施用AjaxAnywhere Javascript 施用编程接口(API)顶替保守通讯机制下表单交付形式。
★ 应请求在服务器端处置的时分,决议那些页面区域可以刷新(refresh)。这个进程可以施用基于客户端的Javascript也许基于服务器端的AjaxAnywhere使用编程接口(API)。
★ 在服务器端,AjaxAnywhere会生成包孕就要更新的HTML代码的XML文档。
★ 在客户端,AjaxAnywhere Javascript接受这个XML文档,解析文档,并更新指定的页面区域。
技术选型(模型)胜势
★ 不必掌握和开发那么多的Javascript代码。
因为匮缺被普遍接受的定名习气、格式化守则和形式,使得Javascript编码相对Java/JSP复杂好多,尤其在浏览器兼容性方面匮缺有效的调试和单元测试手段。运用AjaxAnywhere可以解脱这些Javascript的复杂性。
★ 便利集成。
应用AjaxAnywhere不须改变底层的应用程序代码。
★ 减低技术危险。
可以时时在守旧的通讯机制和Ajax其间切换,容许Web应用程序与此同时支持两种通讯机制。
★ 平滑的兼容性。
再也不要在应用Ajax仍是守旧的交互模式间摇晃了,应用Ajax AnyWhere的Web应用程序可以兼容两种请求形式。
AjaxAnywhere的客户端脚本通过了IE,Mozilla Firefox和Opera等浏览器的兼容性测试,能够最大程度地军令状代码的浏览器兼容性。
一部分注意事项
急需注意的AjaxAnywhere特点是,Ajax接收到的Ajax代码采取非一般的形式处置。AjaxAnywhere经过eval("")的形式施行这些Javascript代码,也可以将所定义的Javascript函数封存在适当的前后文(Context)中。不过,在容许Ajax形式满载的页面区域,不允许施行document.write()等等的Javascript话语。
容许满载的区域可能在交付请求先头就确定了,这种情况下亟需满载客户端的AjaxAnywhere.getZonesToReload()的Javascript函数,不需要额外的服务器逻辑处置。
如其希望AjaxAnywhere满载整个文档,则满载后的AjaxAnywhere.getZonesToReload()函数务须回来“document.all”字符串,也可以在服务器端调用AAUtils.setRefreshAll(true)刷新整个页面。
呼应的,Ajax请求中的response.sendRedirect()会被转化成Javascript代码的location.replace()下令。
下边望Demo:
配备web.xml
Xml代码
xmlns:xsi="http://www.w三.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j二ee http://java.sun.com/xml/ns/j二ee/web-app_二_四.xsd">
list.jsp
SetCharacterEncoding
com.filter.EncodingFilter
encoding
UTF-八
SetCharacterEncoding
/*
AjaxAnywhere
org.ajaxanywhere.AAFilter
AjaxAnywhere
*.do
AjaxAnywhere
*.jsp
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
debug
三
detail
三
零
action
*.do
xmlns:xsi="http://www.w三.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j二ee http://java.sun.com/xml/ns/j二ee/web-app_二_四.xsd">
list.jsp
SetCharacterEncoding
com.filter.EncodingFilter
encoding
UTF-八
SetCharacterEncoding
/*
AjaxAnywhere
org.ajaxanywhere.AAFilter
AjaxAnywhere
*.do
AjaxAnywhere
*.jsp
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
debug
三
detail
三
零
action
*.do
注意上边的最主要的是:设立AjaxAnywhere filter.
view代码:
Html代码
ID编号 | 名称 | 性别 | 工作行业 | ${flag} |
ID编号 | 名称 | 性别 | 工作行业 | ${flag} |
action代码:
Java代码
package com.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ajaxanywhere.AAUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.action.ListForm;
public class ListAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
if (actionForm != null) {
ListForm form = (ListForm) actionForm;
System.out.println("name=" + form.getName());
}
//它标识了要刷新的区域.
if (AAUtils.isAjaxRequest(request)) {
AAUtils.addZonesToRefresh(request, "formlist");
System.out.println("AjaxRequest=Ok");
} request.setAttribute("flag", "pass");
return actionMapping.findForward("list");
}
}
package com.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ajaxanywhere.AAUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.action.ListForm;
public class ListAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
if (actionForm != null) {
ListForm form = (ListForm) actionForm;
System.out.println("name=" + form.getName());
}
//它标识了要刷新的区域.
if (AAUtils.isAjaxRequest(request)) {
AAUtils.addZonesToRefresh(request, "formlist");
System.out.println("AjaxRequest=Ok");
} request.setAttribute("flag", "pass");
return actionMapping.findForward("list");
}
}
最后外加整个demo的封装(war包孕source code)
本文来源:
我的异常网
Java Exception
Dotnet Exception
O