AjaxAnyWhere+Struts的一个使用(demo/feature crew)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值