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="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 { /** * 得到服務器當前時間 * @return */ public Date getTime() { return new Date(); } }
2、 在EasyJWeb的配置文件,配置要把容器中的哪些業務組件及具體方法暴露給客戶端進行遠程腳本調用。內容大致如下:
<ajax> <services allowName="*"> <service name="PersonService" /> </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遠程腳本調用。
by easyjf 大峽