资源描述
Java 开发人员与网页设计人员的桥梁 DWR.docx
《Java 开发人员与网页设计人员的桥梁 DWR.docx》由会员分享,可在线阅读,更多相关《Java 开发人员与网页设计人员的桥梁 DWR.docx(22页珍藏版)》请在冰点文库上搜索。
Java开发人员与网页设计人员的桥梁DWR
Java開發人員與網頁設計人員的橋樑DWR
請先到http:
//getahead.ltd.uk/dwr/下載dwr.jar,放到WEB-INF/lib下…
負責處理客戶端請求,並呼叫Java物件的是DWRServlet,DWR其實也有些Model2的味道,只是View的這一層比較弱,因為放到客戶端的JavaScript應用程式中…
在web.xml中加入DWRServlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
xmlversion="1.0"encoding="UTF-8"?
>
xmlns="
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation=
"
ajaxDWR
dwr-invoker
uk.ltd.getahead.dwr.DWRServlet
debug
true
dwr-invoker
/dwr/*
接下來寫個簡單的Hello吧!
1
2
3
4
5
6
7
packageonlyfun.caterpillar;
publicclassHello{
publicStringhello(Stringname){
return"哈囉!
"+name+"!
您的第一個DWR!
";
}
}
客戶端要呼叫這個Java物件,傳給它參數,而後傳回一個字串,客戶端再顯示這個字串,神奇?
其實是要告訴DWRServlet這件事,這需要一個dwr.xml:
1
2
3
4
5
6
7
8
9
10
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting1.0//EN"
"http:
//www.getahead.ltd.uk/dwr/dwr10.dtd">
creator設定為new,表示使用Hello的無參數建構子來生成物件,javascript設定為Hello,表示客戶端JavaScript程式可以使用Hello來呼叫對應的onlyfun.caterpillar.Hello物件。
來寫個客戶端的網頁,當中有一個輸入欄位…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
第一個DWR程式
dwr/interface/Hello.js是由DWRServlet根據dwr.xml中的設定生成的,engine.js負責客戶端伺服端溝通,util.js是一些好用的JavaScript程式,可以讓您少寫很多JavaScript。
hello.js是我們自訂的函式,按下按鈕後,會呼叫當中的hello()函式:
1
2
3
4
5
6
7
8
functionhello(){
varuser=$('user').value;
Hello.hello(user,callback);
}
functioncallback(msg){
DWRUtil.setValue('result',msg);
}
${'user'}取得輸入欄位的DOM物件,value取得當中的欄位值,而後呼叫Hello.hello(),並將value當作參數傳送…結果是呼叫Server端的HelloJava物件,當結果傳回後,會呼叫JavaScript的callback函式,DWRUtil的setValue()方法會將傳回的msg設定給指定id的DOM,結果就是…啥!
AJAX的功能在哪…就這個而言就是發出非同步請求,而回應不用Refresh頁面啦!
把滑鼠指到書的照片上,會顯示提示文字,這些提示文字本身不是存在網頁上的,而是在Server端,當滑鼠指到書上時,會用Requestobject去抓,然後顯示在框框中…
先寫個Java類別吧!
會抓properties檔案中的文字訊息,例如…
1
2
3
4
5
6
7
8
9
10
11
12
13
packageonlyfun.caterpillar;
importjava.util.ResourceBundle;
publicclassBook{
privateResourceBundleresource;
publicBook(){
resource=ResourceBundle.getBundle("book");
}
publicStringgetDescription(Stringkey){
returnresource.getString(key);
}
}
從程式中就知道,它會去抓book_zh_TW.properties的資料,這不是重點啦!
只是Java的一個功能,我們要看的是DWR,不過先把book_zh_TW.properties準備好…
1
2
3
java=Java學習筆記的介紹…BlaBla...
spring=Spring技術手冊的介紹…BlaBla...
ajax=Ajaxinaction中文版的介紹…
唔!
裏頭是中文字,自己用native2ascii轉換吧…這也不是重點…我們是要看DWR怎麼做到文字提示功能…
一樣的…要開放這個Book物件,在dwr.xml中…
1
2
3
4
5
6
7
8
9
10
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting1.0//EN"
"http:
//www.getahead.ltd.uk/dwr/dwr10.dtd">
scope設定為application,表示這個Book物件在整個應用程式階段都活著。
然後,客戶端寫個網頁…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
個人著/譯作onmouseout="clearData();">href=".tw/waweb2004/home/home.aspx?
pg=HM010X&bn=AXP011800">
style="border:
0pxsolid;width:
80px;height:
110px;float:
left;"
alt="Ajaxinaction中文版"title="Ajaxinaction中文版"
src="images/ajax_in_action_c.jpg"hspace="10"vspace="2">