AJAX技术得到广泛的应用,相关的架构也泛滥成灾,再有人提起新的AJAX架构,相信有另外很多人会不屑一顾——看哦,又一个在重复发明车轮子的人。
其实也谈不上重复发明,XMLHttpRequest、JSON、Annotation这些技术都是现成的,它们之间有各种不同的组合应用的方法。我只是希望能按新的思路,组合出一个架构来以简单的方式应用在我的项目中。
以下是其中一些比较有代表性的代码,不知道是否能够吸引你?
一、使用Annotation标记以AJAX方式调用的方法
业务对象中的方法如果想暴露在Ajax调用的范围内,可以如下方式说明:
@Ajax
static public int length(String[] a)
{
return a.length;
}
在@Ajax上还可以指定调用方法的方式,默认的是新建一个对象调用,当前还支持以静态方式调用和采用对象池的方式,如:
@Ajax(type=Ajax.RunType.POOL)
二、在页面中以“类名.js”的方式进行引用
<SCRIPT LANGUAGE="JavaScript">
$include("ajax/com.opesoft.fw.ajax.TestBO.js");
</SCRIPT>
其实这个语句就相当于
<script type="text/javascript" src="/ajax/com.opesoft.fw.ajax.TestBO.js" /></script>
直接用引用的URL对应到要访问的类上,省去了配置文件(约定取代配置,呵呵,借用了一下思路)。
三、JS里的同一方法支持同步和异步两种方式
标准的AJAX当然应该是异步来进行同后台数据交换的,但是相信很多程序,特别是需要应用到旧的系统框架中的程序还是用返回值的方式处理起来更为舒服。在本架构中生成的JS方法可以根据传入的参数不同,以两种不同的方式进行调用。
同步方式:
var num=TestBO.add(5,7);
异步方式:
function show(data,args)
{
……
}
TestBO.add(5,7,show,'需要传递的信息');
前两个参数对应的是Java方法中的参数,第三个参数是回调函数,如果没有的指定这个参数的话,就认为是同步方式调用。
第四个参数:args存在的理由是:有时我们经常希望能把当前一些状态传入到回调函数中去,这里就可以把这些值放在这个参数里,它们作为第二个参数传给从后台获取数据结束后调用的方法。
四、强大的对象转换
数据传递部分是在JSON的基础上进行了一些封装,能支持调用Java端方法的参数是比较复杂的类型或Bean对象。如传递一个字符串的数组:
TestBO.length(new Array('a','b','c'))
如果参数是一个Java对象,JS端代码:
var user=JavaClass("com.opesoft.fw.core.utils.User");
//其实这句在这里可以简单地写成:var user={};
user.name="Larlf.Wang";
TestBO.getName(user);
数据对象的结构可以在JSON<>Java中相互转换,具体思路可以参见我Blog中的文章:
http://larlf.iteye.com/blog/88983
在附件中是一个简单的演示,解压到Tomcat5.5下就可以看到了。
今年流行大奔的轮子,不巧的是我们家只有一辆自行车,那我是否就要找个大奔的轮子套上捌捌扭扭地骑着?我还是认为适合自己的才是最好的,这也许就是为什么总有人重复发明车轮子的原因。
分享到:
- 2007-10-24 23:49
- 浏览 2329
- 评论(6)
- 论坛回复 / 浏览 (6 / 4111)
- 查看更多
相关推荐
决不重新发明轮子.docx
自己实现轮子优秀实践
自行车轮子摩擦力分析PPT课件.pptx
NULL 博文链接:https://changzhiwin.iteye.com/blog/505946
自行车轮子摩擦力分析学习教案.pptx
我想发明智能机器人作文 我想发明智能机器人作文(精选6篇) 我想发明智能机器人作文1 我想发明的机器人,它叫蚂蚁机器人,是一种十分小巧又功能强大的智能机器人,主要用于预测险情和救灾。 它装有自然灾害预测系统...
自行车轮子摩擦力分析PPT学习教案.pptx
该程序源代码用于STM32F103ZET6步进电机智能小车轮子前转一周实验。 1、采用KEIL5软件开发。 2、用到的库文件:Keil.STM32F1xx_DFP.2.3.0.pack。 3、程序对应处理器:STM32F103ZET6。 4、步进电机驱动芯片型号:ULN...
重新发明轮子这些是我遇到的一系列面试问题的集合,我被要求重新发明轮子。
行业资料-交通装置-一体注塑式童车轮子.zip
如何避免产品设计中的「生造方案」和「重新发明轮子」? .doc
该程序源代码用于STM32F103ZET6步进电机智能小车轮子前转四分之一周实验。 1、采用KEIL5软件开发。 2、用到的库文件:Keil.STM32F1xx_DFP.2.3.0.pack。 3、程序对应处理器:STM32F103ZET6。 4、步进电机驱动芯片型号...
你知道自行车轮子为什么是圆的PPT教案学习.pptx
该程序源代码用于STM32F103ZET6步进电机智能小车轮子前转半周实验。 1、采用KEIL5软件开发。 2、用到的库文件:Keil.STM32F1xx_DFP.2.3.0.pack。 3、程序对应处理器:STM32F103ZET6。 4、步进电机驱动芯片型号:ULN...
maya车轮子,用各种界面制作的maya车轮子,请使用哈哈
玩具汽车轮子组装机(含工程图sw15可编辑+BOM).rar
SolidWorks小轮子,标准轮子,带轴承,实心橡胶轮,用于手推车
行业资料-交通装置-一种儿童电动车上的轮子支架.zip
pygraphviz 1.3.1。python3.4版本的轮子。win64位文件