职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1933|回复: 1

性能提升10倍的Ajax远程脚本调用引擎

[复制链接]
accp 发表于 2008-4-28 19:10 | 显示全部楼层 |阅读模式
EasyJWeb中已经有了一个Ajax远程脚本调用引擎,这是很早的事情了。但由于一直存在一些性能问题,所以一直没有给大家推荐,直到最近m3发布,通过对Ajax远程脚本调用引擎进行完善,把处理复杂对象的返回进行的简化,通过在以前的几个应用中进行了测试,发现性能一下子提升了至少10倍以上,并且运行比较稳定,因此在这里给大家推荐推荐。
  Ajax远程脚本调用示例演示:http://easyjweb.demo.easyjf.com/ajax/ajax.html

  完整的示例应用及源码下载:ftp://ftp1.easyjf.com/easyjweb/demo/ajax.war
  

  EasyJWeb是一个提供了对Ajax远程脚本调用功能支持的框架,他帮助你完成Ajax远程脚本调用中的大多数细节工作,你基本上不用写额外的代码就能非常轻松的使用javascript来调用服务器的业务组件的相关方法,这些业务组件可以是任何java对象,比如EJB、EasyJWeb容器中的Bean、Spring容器中的Bean等等。使用EasyJWeb的Ajax远程脚本调用,需要下面的几个步骤:
  1、 在EasyJWeb容器或子容器中配置供客户端脚本调用的业务组件。比如,在easyjweb的配置文件中像下面的方式配置Bean:

<bean name=\"ersonService\" class=\"easyjweb.demo.service.impl.PersonServiceImpl\" />
     PersonServiceImpl的代码如下:

package easyjweb.demo.service.impl;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class PersonServiceImpl {
/**
* 得到服务器当前时间
* @return
*/
public Date getTime() {
return new Date();
}
}
2、 在EasyJWeb的配置文件,配置要把容器中的哪些业务组件及具体方法暴露给客户端进行远程脚本调用。内容大致如下:

<ajax>
<services allowName=\"*\">
<service name=\"ersonService\" />
</services>
</ajax>
上面的ajax配置信息表示暴PersonService的所有public方法供客户端使用javascript调用。
只需要上面的两步,就完成了服务器端的相关工作。服务器端不再需要写任何Action,EasyJWeb会自动处理客户端发送来的Ajax远程脚本调用,下面我们进一步看看客户端的程序。
3、为了能够在客户端页面中直接使用javascript进行对PersonService业务组件的Ajax远程脚本调用,我们需要在页面中引入下面三个js。

<script src=\"ejf/easyajax/prototype.js\" type=\"text/javascript\"></script>
<script src=\"ejf/easyajax/engine.js\" type=\"text/javascript\"></script>
<script src=\"ejf/easyajax/PersonService.js\" type=\"text/javascript\"></script>
  其中第一个ejf/easyajax/prototype.js引入的是prototype.js,这是一个javascript的基础库,提供很多对基础javascript类的扩展,并提供了ajax相关的实用组件,EasyJWeb的远程脚本调用引擎是基于prototype.js构建的。
  第二个ejf/easyajax/engine.js是EasyJWeb的远程脚本调用支持引擎,他负责处理Ajax远程脚本调用的相关的细节,如参数处理、回调处理等,同时提供了一些实用工具如EasyAjaxUtil等供客户端使用。
  第三个ejf/easyajax/PersonService.js是PersonService对象,PersonService.js的内容是根据服务器端的容器中名为PersonService的Bean及EasyJWeb的ajax配置信息生成的。只要引入了PersonService.js,我们就可以直接在页面中调用PersonService的相关方法了。
  上面的三个js文件都是服务器端动态生成的,需要我们在web.xml文件把所有/ejf/*的URL都交由EasyJWeb来处理。因此,需要在Web.xml的url中增加如下的映射内容:

<servlet-mapping>
<servlet-name>easyjf</servlet-name>
<url-pattern>/ejf/*</url-pattern><!--所有/ejf/开头的url都由easyjweb来处理-->
</servlet-mapping>

4、 在页面中使用javascript调用服务器的相关方法

<script>
function showServerTime(){
PersonService.getTime(showTime) ;
function showTime(ret){
alert(\"服务器端时间: \"+ret) ;
}
}
</script>
  怎么样,一切都是如此简单,不需要写任何PersonService的代码,不需要写任何Action,只需要进行非常简单的配置,就能让我们服务器上的业务组件支持Ajax远程脚本调用。
shmilyyu 发表于 2011-7-19 10:41 | 显示全部楼层
哦...这个...偶昨天就看了....
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 22:32 , Processed in 0.128390 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表