dwr框架(菜鳥入門)
該文可以看做是作者的學(xué)習(xí)筆記,部分內(nèi)容可以認(rèn)為是個(gè)人理解,請(qǐng)讀者注意辨別。
DWR(Direct Web Remoting)是一個(gè)開源的類庫(kù),可以幫助開發(fā)人員開發(fā)包含AJAX技術(shù)的網(wǎng)站.它可以允許在瀏覽器里的代碼使用運(yùn)行在WEB服務(wù)器上的JAVA函數(shù),就像它就在瀏覽器里一樣.
DWR采取了一個(gè)類似AJAX的新方法來動(dòng)態(tài)生成基于JAVA類的JavaScript代碼.這樣WEB開發(fā)人員就可以在JavaScript里使用Java代碼就像它們是瀏覽器的本地代碼(客戶端代碼)一樣;但是Java代碼運(yùn)行在WEB服務(wù)器端而且可以自由訪問WEB 服務(wù)器的資源.出于安全的理由,WEB開發(fā)者必須適當(dāng)?shù)嘏渲媚男㎎ava類可以安全的被外部使用.
要使用dwr要先下載
http://getahead.org/dwr/
下載內(nèi)容
DownloadVersion 2.0.3Size
JAR File: dwr.jar(489Kb)
WAR File:dwr.war(2.14Mb)
Sources:dwr-2.0.3-src.zip (20.78Mb)
首先看下工程里面:
多了dwr.jar(dwr jar包),dwr.xml(dwr的配置文件),dwr20.dtd(在編輯xml配置文件時(shí),提供自動(dòng)提示功能),其實(shí)web.xml配置文件也配置了dwr的servlet,來看下:
至于這個(gè)url為什么還要用"/dwr/*"還不是很清楚,我想的是如果客戶端有請(qǐng)求過來經(jīng)過dwr的都被指定的servler處理(個(gè)人理解)。
在來看下dwr.xml的配置:
紅線框的是關(guān)于dwr智能提示的配置,里面藍(lán)線框的是上面提到的dwr20.dtd的路徑,如果路徑或者文件名不對(duì),那么前面就會(huì)出現(xiàn)警告:
如果出錯(cuò)了也無所謂,只不過是不能智能提示,如果你能把這寫節(jié)點(diǎn)記住的話,那就不需要了,否則就把dwr20.dtd拷貝到與dwr.xml相同的目錄下。
在看重要的部分dwr的節(jié)點(diǎn):
<allow>標(biāo)簽中包括可以暴露給javascript訪問的東西。</allow>
<create>標(biāo)簽中指定javascript中可以訪問的java類,并定義DWR應(yīng)當(dāng)如何獲得要進(jìn)行遠(yuǎn)程的類的實(shí)例。creator="new"屬性指定java類實(shí)例的生成方式,new意味著DWR應(yīng)當(dāng)調(diào)用類的默認(rèn)構(gòu)造函數(shù)來獲得實(shí)例,其他的還有spring方式,通過與IOC容器Spring進(jìn)行集成來獲得實(shí)例等等。javascript="sayHello"屬性指定javascript代碼訪問對(duì)象時(shí)使用的名稱。</create>
name這里一般用class指一個(gè)類,value指類的全名,包括包名。
好了配置文件我們算做好了,在來看看jsp中在JavaScript中所做的配置。
第一個(gè)是dwr的引擎js文件,第二個(gè)是用戶自己要訪問java的類的js文件。
在來看看JavaScript調(diào)用java類的方法
注意這里的sayHello還有上面配置的sayHello.js(文件名)要和dwr.xml中配置JavaScript的名字要相同,否則就報(bào)錯(cuò)。
下來看下java類中的方法。
在上面的JavaScript中有人就想問,為什么調(diào)用Hello的方法時(shí)要傳入一個(gè)函數(shù)。來說下,第一個(gè)是java方法的參數(shù),第二個(gè)方法是回調(diào)函數(shù),這個(gè)函數(shù)是負(fù)責(zé)接受JavaScript調(diào)用java類后返回的結(jié)果。
到這里一個(gè)簡(jiǎn)單的dwr框架就搞完了,來先看下是否成功,啟動(dòng)jsp的服務(wù)器,然后下圖:
點(diǎn)擊查看文件,先把里面所有的東西刪除了,然后瀏覽你的jsp頁(yè)面,就出出現(xiàn)一下2個(gè)文件
就是我們剛才配置的兩個(gè)js文件,如果客戶端通過JavaScript調(diào)用sayHello.Hello的話,那么就會(huì)由sayHello.js處理,然后轉(zhuǎn)交給engine引擎,之后由引擎向服務(wù)器請(qǐng)求。
來看下效果,
很好,看來運(yùn)行很好,但是發(fā)現(xiàn)個(gè)問題,我剛才在配置文件里配置的com.dwr.sayHello中所有的方法我們都可以訪問的嘛?其實(shí)并不是這樣的,要是不設(shè)置的話,就默認(rèn)允許調(diào)用所有的方法,要是想要指定的方法允許訪問,那么就要在dwr.xml中配置了。來看:
好了,具體配置就是這樣的。
原文地址: http://blog.sina.com.cn/s/blog_5a39b0c70100bgdh.html
還有一片續(xù): http://blog.sina.com.cn/s/blog_5a39b0c70100bgfy.html
更多文章、技術(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ì)您有幫助就好】元
