在EasyJWeb對(duì)Ajax的支持中,通過(guò)引用類似<script type='text/javascript' src='ejf/easyajax/UserService.js'></script>的url可以動(dòng)態(tài)得到調(diào)用服務(wù)器端業(yè)務(wù)組件的javascript腳本。另外,在基于EasyJWeb的CRUD應(yīng)用中,也可以使用類似http://localhost:8080/user/edit/3的URL來(lái)編輯數(shù)據(jù)表中的某一條記錄。究竟EasyJWeb中是如何處理這些URL的呢?本文將作簡(jiǎn)單的分析!
在EasyJWeb中,有一個(gè)URL映射處理器,通過(guò)配置這個(gè)映射處理器可以非常簡(jiǎn)單地實(shí)現(xiàn)Web應(yīng)用中類似URLRewrite的需求。映射處理器了代碼如下所示:







該接口的默認(rèn)實(shí)現(xiàn)是com.easyjf.web.core.PathMappingRulerImpl,在基于EasyJWeb的應(yīng)用中,每一個(gè)交由EasyJWeb框架處理的請(qǐng)求url,都會(huì)通過(guò)這個(gè)映射處理器進(jìn)行轉(zhuǎn)換。通過(guò)使用EasyJWeb缺省URL映射轉(zhuǎn)換器,客戶端請(qǐng)求路徑/module/command/params將按以下請(qǐng)求規(guī)則,作如下的映射處理.
映射處理前的URL:
1、 /module/command/name=xxx
2、 /module
3、 /module/command
4、 /module/command/12345
5、/module/edit/12345/title=1111
6、/moduel/title=測(cè)試
映射處理的URL:
1~? /module.ejf?easyjwebCommand=command&name=xxx
2~? /module.ejf
3~? /module.ejf?easyjwebCommand=command
4~? /module.ejf?easyjwebCommand=command&cid=1234
5、/module.ejf?easyJWebCommand=edit&cid=123455&title=111
6、/module.ejf?title=測(cè)試
因此,在一個(gè)EasyJWeb自動(dòng)代碼生成的CRUD應(yīng)用中,http://localhost:8080/user.ejf?easyJWebCommand=edit&cid=3 這個(gè)URL表示編輯user對(duì)象中屬性cid為3的信息。使用默認(rèn)的映射處理規(guī)則,上面的url可以變成如下的形式:
http://localhost:8080/user/edit/3
這個(gè)url表示運(yùn)行user.ejf這個(gè)模塊,傳送的命令為edit,標(biāo)準(zhǔn)key值為3。
URL映射轉(zhuǎn)換器的一個(gè)最典型的應(yīng)用示例,就是EasyJWeb-0.8版本開(kāi)始增加的遠(yuǎn)程Web腳本處理支持引擎,也即Ajax的部分功能。遠(yuǎn)程JS腳本調(diào)用支持只是EasyJWeb中的一個(gè)小小插件,EasyJWeb的Ajax實(shí)現(xiàn)只是一個(gè)普通的EasyJWeb Module(Action)。這個(gè)Action即com.easyjf.web.ajax.AjaxEngineAction。
看過(guò)本人《在EasyJWeb中輕松開(kāi)發(fā)Ajax運(yùn)用》一文的朋友都知道,遠(yuǎn)程Web腳本調(diào)用涉及到一個(gè)如何生成調(diào)用服務(wù)器端方法的Javascript Stub問(wèn)題。在EasyJWeb對(duì)Ajax的支持中,可以直接通過(guò)下面的URL來(lái)生成遠(yuǎn)程javascript調(diào)用腳本。



第一句返回prototype.js腳本,第二句返回EasyJWeb的Ajax支持引擎engine.js腳本,第三句返回生成服務(wù)器UserService組件的遠(yuǎn)程調(diào)用腳本。
上面的URL,改成通過(guò)原生的EasyJWeb URL來(lái)引用,可以寫(xiě)成下面的形式:



AjaxEngineAction中處理這幾個(gè)調(diào)用代碼如下:
























小結(jié):
一個(gè)簡(jiǎn)單適用的Web MVC框架,不僅僅是實(shí)現(xiàn)單純的頁(yè)面及代碼分離功能,還應(yīng)該提供更多的與Web應(yīng)用相關(guān)的實(shí)用工具及解決通用應(yīng)用需求抽象功能。在EasyJWeb中,除擁有了很多MVC框架的基本特性以外,還內(nèi)置了很多解決應(yīng)用Web應(yīng)用程序中一些通過(guò)需求的工具,比如URL映射處理、自動(dòng)代碼生成、權(quán)限系統(tǒng)支持等,因此會(huì)使得我們開(kāi)發(fā)Web應(yīng)用程序開(kāi)發(fā)變得更加簡(jiǎn)單、高效。作為一個(gè)完全由國(guó)內(nèi)Java開(kāi)源愛(ài)好者發(fā)起及實(shí)現(xiàn)的Web MCX框架,雖然在EasyJWeb-0.8版本中還存在著很多問(wèn)題,但只要有更多的開(kāi)源愛(ài)好者參與到其中來(lái),相信在以后的版本中會(huì)不斷得到完善。
(本文作者:EasyJF開(kāi)源??大峽 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)保留作者聲明,謝謝!)