借助mootools 快速开发一个重用 ajax 提交方式

 

做web 程序的你,是不是经常会遇到url提交, 请求呢.

 

之间会不会遇到 很多需要修改页面表单域和后台po的对应呢.

 

你是不是想使用java 语法的方式.来写ajax 提交. 并且实现js 对象到 java 对象的一站式映射呢

 

例如:

 

js 对象: data 包含(field1,field2,field3....)

 

java 对象 PO 也包含 field1,field2,field3.....

 

这两个对象属性不一定完全一致, 但是你希望他们一致的地方能直接通过ajax 请求到servlet时,直接自动转换,

 

不需要人为的去

request.getParameter("field1")

 然后一个一个的去赋值.

 

那么利用mootools 你可以很灵巧的扩展出你自己所需求的js 类库

 

声明: 本文没有什么创新,没有什么深奥的技术, 有的只是一颗追求简单的心. 如果你也想把你代码从10行缩短到5行,

 

那么你可以试试.

 

  • 首要工作:

 

1. js 用上了mootools

2. java后台用上了org.apache.commons.beanutils 包

 

那么现在开始吧:

 

  • 第一步:

 

定制自己的servlet 提交类库

 

Servlet = new Class({
			data : {},
			responseCall : null,
			initialize : function(forward) {
				if(forward){
					this.data.forward = forward;//这个forward用来转发,如果你的单个servlet就
                                //一个业务的话,这里留空就行
                                 }
				this.data.random = Math.random();//这里用了随机数,其实加不加都行
			},
			submit : function(url) {
				var _responseCall = this.responseCall;
				new Request.JSON({
							url : url,
							onComplete : function(responseJson, text) {
								if (responseJson.status == "fail") {
									alert(responseJson.message);
									return;
								}
								if (_responseCall) {//如果设置了提交成功的回调
									_responseCall(responseJson, text);
								}

							},
							failure : function() {
								alert("Error Post Servlet : " + url);
							}
						}).post(this.data);
			}

		});

 
你是不是发现没有 field1=**&field2=*&field3=... 这种提交方式,那是用了mootools 的json提交 , mootools 类库比不上jquery丰富 但是它在定制自己的js扩展框架那块, 确实jquery比不上的.因为他的语法借鉴的就是java 的oo思想

  • 第二步:

 

开始利用自己写的servlet ajax类库来封装数据

 

var sv = new Servlet("add");//forward转发,如果servlet 没有其他业务则留空
		sv.data.elementID1= $('elementID1').value;
		sv.data.elementID2= $('elementID2').value;
		sv.data.elementID3= $('elementID3').value;
                sv.data.***** = ....... // 灵活的对象赋值方式
 		sv.responseCall = addinvResponse;
		sv.submit(url);
		
		
		function addinvResponse(json,text){
			alert("添加成功");
		}

 

是不是特别像java 的对象声明语法啊.  呵呵, 好戏在后面.

 

  • 第三步:

 

这里就到java servlet 了. 看看如何封装js提交的数据的.

 

首先:

request.getParameter("forward")

 你是不是设置了转发

如果设置了

 

if (forward.equals("add")) {
			addClass(request, response);
		}

 那好:  看addClass方法

MyClass inv = new MyClass();
		inv = (MyClass) ParseRequestUtils.parseRequest(request, inv);//数据封装

 哦哈? 难道这个inv 对象就包含了. js 中设置 field1 ,field2 ,field3的值了么?

是滴, 你懂得

 

 

那么来看看 这个ParseRequestUtils.parseRequest又是何方神圣.

 

public static Object parseRequest(HttpServletRequest request, Object bean) {
		// 取得所有参数列表
		Enumeration enumObj = request.getParameterNames();
		// 遍历所有参数列表
		while (enumObj.hasMoreElements()) {

			Object obj = enumObj.nextElement();
			try {
				// 取得这个参数在Bean中的数据类开
				Class cls = PropertyUtils.getPropertyType(bean, obj.toString());
				if(cls==null){
					continue;
				}
				// 把相应的数据转换成对应的数据类型
				Object beanValue = ConvertUtils.convert(request
						.getParameter(obj.toString()), cls);
				// 添冲Bean值
				PropertyUtils.setProperty(bean, obj.toString(), beanValue);
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return bean;
	}

 

哦, 到这里算是看明白了. 不就是把提交的request请求的参数一个个对应类型放入java 对象了中了么.

 

是滴.是这样的. 如果你们有更简单的方法,望赐教!

 

  • 第四步:

还等啥? 操作吧

 

service.insertMyClass(inv);

 

备注: 

 

回头你们可以试试 在js 中随意的增删几个参数, java对象就会改变, 是不是少写很多代码啊.


这个servlet js类库 , 只能操作一般的基于页面表单方式的提交或者请求 , 暂时没有做文件上传, 不过大家扩展的话,应该不是难题.

 

购物商城项目采用PHP+mysql有以及html+css jq以及layer.js datatables bootstorap等插件等开发,采用了MVC模式,建立一个完善的电商系统,通过不同用户的不同需求,进行相应的调配和处理,提高对购买用户进行配置….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值