在EasyJWeb對(duì)Ajax的支持中,通過引用類似

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

EasyJWeb中缺省URL映射轉(zhuǎn)換器揭密

系統(tǒng) 2812 0
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

  在EasyJWeb對(duì)Ajax的支持中,通過引用類似<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來編輯數(shù)據(jù)表中的某一條記錄。究竟EasyJWeb中是如何處理這些URL的呢?本文將作簡(jiǎn)單的分析!
  在EasyJWeb中,有一個(gè)URL映射處理器,通過配置這個(gè)映射處理器可以非常簡(jiǎn)單地實(shí)現(xiàn)Web應(yīng)用中類似URLRewrite的需求。映射處理器了代碼如下所示:

public interface IPathMappingRuler ... {
// 對(duì)請(qǐng)求路徑的解析;
public StringgetModuleName(); // 得到模板的名稱
public MapgetParams(); // 得到模板缺省參數(shù)
public StringgetCommand(); // 得到模板命令
}

  該接口的默認(rèn)實(shí)現(xiàn)是com.easyjf.web.core.PathMappingRulerImpl,在基于EasyJWeb的應(yīng)用中,每一個(gè)交由EasyJWeb框架處理的請(qǐng)求url,都會(huì)通過這個(gè)映射處理器進(jìn)行轉(zhuǎn)換。通過使用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版本開始增加的遠(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。

看過本人 《在EasyJWeb中輕松開發(fā)Ajax運(yùn)用》 一文的朋友都知道,遠(yuǎn)程Web腳本調(diào)用涉及到一個(gè)如何生成調(diào)用服務(wù)器端方法的Javascript Stub問題。在EasyJWeb對(duì)Ajax的支持中,可以直接通過下面的URL來生成遠(yuǎn)程javascript調(diào)用腳本。

script type ='text/javascript' src ="ejf/easyajax/prototype.js" > script >
script type ='text/javascript' src ='ejf/easyajax/engine.js' > script >
script type ='text/javascript' src ='ejf/easyajax/UserService.js' > script >

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

script type ='text/javascript' src ="easyajax.ejf?easyJWebCommand=prototype.js" > script >
script type ='text/javascript' src ='easyajax.ejf?engine.js' > script >
script type ='text/javascript' src ='easyajax.ejf?easyJWebCommand=UserService' > script >

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

public PagedoEngine(WebFormform,Modulemodule) throws Exception ... {
return module.findPage( " engine-js " );
}


public PagedoPrototype(WebFormform,Modulemodule) throws Exception ... {
return module.findPage( " prototype " );
}


public PagedoAjaxHome(WebFormform,Modulemodule) throws Exception ... {
Stringcommand
= CommUtil.null2String(form.get( " easyJWebCommand " ));
if (command.endsWith( " .js " ))
... {
command
= command.substring( 0 ,command.length() - 3 );
}

Objectbean
= AjaxUtil.getServiceContainer().getService(command);
// System.out.println(command);
form.addResult( " scriptName " ,command);
form.addResult(
" methodList " ,AjaxUtil.getAjaxStub(bean));
return module.findPage( " stub " );
}


小結(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)用程序中一些通過需求的工具,比如URL映射處理、自動(dòng)代碼生成、權(quán)限系統(tǒng)支持等,因此會(huì)使得我們開發(fā)Web應(yīng)用程序開發(fā)變得更加簡(jiǎn)單、高效。作為一個(gè)完全由國(guó)內(nèi)Java開源愛好者發(fā)起及實(shí)現(xiàn)的Web MCX框架,雖然在EasyJWeb-0.8版本中還存在著很多問題,但只要有更多的開源愛好者參與到其中來,相信在以后的版本中會(huì)不斷得到完善。

(本文作者: EasyJF開源 大峽  歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)保留作者聲明,謝謝!)




EasyJWeb中缺省URL映射轉(zhuǎn)換器揭密


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論