Ajax遠(yuǎn)程腳本調(diào)用示例演示:http://easyjweb.demo.easyjf.com/ajax/ajax.html
完整的示例應(yīng)用及源碼下載:ftp://ftp1.easyjf.com/easyjweb/demo/ajax.war
EasyJWeb是一個(gè)提供了對(duì)Ajax遠(yuǎn)程腳本調(diào)用功能支持的框架,他幫助你完成Ajax遠(yuǎn)程腳本調(diào)用中的大多數(shù)細(xì)節(jié)工作,你基本上不用寫額外的代碼就能非常輕松的使用javascript來調(diào)用服務(wù)器的業(yè)務(wù)組件的相關(guān)方法,這些業(yè)務(wù)組件可以是任何java對(duì)象,比如EJB、EasyJWeb容器中的Bean、Spring容器中的Bean等等。使用EasyJWeb的Ajax遠(yuǎn)程腳本調(diào)用,需要下面的幾個(gè)步驟:
1、 在EasyJWeb容器或子容器中配置供客戶端腳本調(diào)用的業(yè)務(wù)組件。比如,在easyjweb的配置文件中像下面的方式配置Bean:
<bean name="PersonService" 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 { /** * 得到服務(wù)器當(dāng)前時(shí)間 * @return */ public Date getTime() { return new Date(); } }
2、 在EasyJWeb的配置文件,配置要把容器中的哪些業(yè)務(wù)組件及具體方法暴露給客戶端進(jìn)行遠(yuǎn)程腳本調(diào)用。內(nèi)容大致如下:
<ajax> <services allowName="*"> <service name="PersonService" /> </services> </ajax>
上面的ajax配置信息表示暴PersonService的所有public方法供客戶端使用javascript調(diào)用。
只需要上面的兩步,就完成了服務(wù)器端的相關(guān)工作。服務(wù)器端不再需要寫任何Action,EasyJWeb會(huì)自動(dòng)處理客戶端發(fā)送來的Ajax遠(yuǎn)程腳本調(diào)用,下面我們進(jìn)一步看看客戶端的程序。
3、為了能夠在客戶端頁(yè)面中直接使用javascript進(jìn)行對(duì)PersonService業(yè)務(wù)組件的Ajax遠(yuǎn)程腳本調(diào)用,我們需要在頁(yè)面中引入下面三個(gè)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>
其中第一個(gè)ejf/easyajax/prototype.js引入的是prototype.js,這是一個(gè)javascript的基礎(chǔ)庫(kù),提供很多對(duì)基礎(chǔ)javascript類的擴(kuò)展,并提供了ajax相關(guān)的實(shí)用組件,EasyJWeb的遠(yuǎn)程腳本調(diào)用引擎是基于prototype.js構(gòu)建的。
第二個(gè)ejf/easyajax/engine.js是EasyJWeb的遠(yuǎn)程腳本調(diào)用支持引擎,他負(fù)責(zé)處理Ajax遠(yuǎn)程腳本調(diào)用的相關(guān)的細(xì)節(jié),如參數(shù)處理、回調(diào)處理等,同時(shí)提供了一些實(shí)用工具如EasyAjaxUtil等供客戶端使用。
第三個(gè)ejf/easyajax/PersonService.js是PersonService對(duì)象,PersonService.js的內(nèi)容是根據(jù)服務(wù)器端的容器中名為PersonService的Bean及EasyJWeb的ajax配置信息生成的。只要引入了PersonService.js,我們就可以直接在頁(yè)面中調(diào)用PersonService的相關(guān)方法了。
上面的三個(gè)js文件都是服務(wù)器端動(dòng)態(tài)生成的,需要我們?cè)趙eb.xml文件把所有/ejf/*的URL都交由EasyJWeb來處理。因此,需要在Web.xml的url中增加如下的映射內(nèi)容:
<servlet-mapping> <servlet-name>easyjf</servlet-name> <url-pattern>/ejf/*</url-pattern><!--所有/ejf/開頭的url都由easyjweb來處理--> </servlet-mapping>
4、 在頁(yè)面中使用javascript調(diào)用服務(wù)器的相關(guān)方法
<script> function showServerTime(){ PersonService.getTime(showTime) ; function showTime(ret){ alert("服務(wù)器端時(shí)間: "+ret) ; } } </script>
怎么樣,一切都是如此簡(jiǎn)單,不需要寫任何PersonService的代碼,不需要寫任何Action,只需要進(jìn)行非常簡(jiǎn)單的配置,就能讓我們服務(wù)器上的業(yè)務(wù)組件支持Ajax遠(yuǎn)程腳本調(diào)用。
by easyjf 大峽