DWR 入门与应用文档格式.docx
- 文档编号:20492240
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:22
- 大小:122.24KB
DWR 入门与应用文档格式.docx
《DWR 入门与应用文档格式.docx》由会员分享,可在线阅读,更多相关《DWR 入门与应用文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
xmlversion="
1.0"
encoding="
UTF-8"
>
web-appid="
WebApp_ID"
version="
2.4"
xmlns="
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation=
"
<
display-name>
ajaxDWR<
/display-name>
servlet>
servlet-name>
dwr-invoker<
/servlet-name>
servlet-class>
uk.ltd.getahead.dwr.DWRServlet<
/servlet-class>
init-param>
description>
/description>
param-name>
debug<
/param-name>
param-value>
true<
/param-value>
/init-param>
/servlet>
servlet-mapping>
url-pattern>
/dwr/*<
/url-pattern>
/servlet-mapping>
/web-app>
接下來寫個簡單的Hello吧!
packageonlyfun.caterpillar;
publicclassHello{
publicStringhello(Stringname){
return"
哈囉!
+name+"
!
您的第一個DWR!
;
}
}
客戶端要呼叫這個Java物件,傳給它參數,而後傳回一個字串,客戶端再顯示這個字串,神奇?
其實是要告訴DWRServlet這件事,這需要一個dwr.xml:
!
DOCTYPEdwrPUBLIC"
-//GetAheadLimited//DTDDirectWebRemoting1.0//EN"
"
//www.getahead.ltd.uk/dwr/dwr10.dtd"
dwr>
allow>
createcreator="
new"
javascript="
Hello"
paramname="
class"
value="
onlyfun.caterpillar.Hello"
/>
/create>
/allow>
/dwr>
creator設定為new,表示使用Hello的無參數建構子來生成物件,javascript設定為Hello,表示客戶端JavaScript程式可以使用Hello來呼叫對應的onlyfun.caterpillar.Hello物件。
來寫個客戶端的網頁,當中有一個輸入欄位…
DOCTYPEHTMLPUBLIC"
-//W3C//DTDHTML4.01Transitional//EN"
html>
head>
metahttp-equiv="
Content-Type"
content="
text/html;
charset=BIG5"
title>
第一個DWR程式<
/title>
scripttype='
text/javascript'
src='
dwr/interface/Hello.js'
/script>
dwr/engine.js'
dwr/util.js'
hello.js'
/head>
body>
inputid="
user"
type="
text"
inputtype='
button'
value='
哈囉'
onclick='
hello();
'
divid="
result"
/div>
/body>
/html>
dwr/interface/Hello.js是由DWRServlet根據dwr.xml中的設定生成的,engine.js負責客戶端伺服端溝通,util.js是一些好用的JavaScript程式,可以讓您少寫很多JavaScript。
hello.js是我們自訂的函式,按下按鈕後,會呼叫當中的hello()函式:
functionhello(){
varuser=$('
user'
).value;
Hello.hello(user,callback);
}
functioncallback(msg){
DWRUtil.setValue('
result'
msg);
${'
}取得輸入欄位的DOM物件,value取得當中的欄位值,而後呼叫Hello.hello(),並將value當作參數傳送…結果是呼叫Server端的HelloJava物件,當結果傳回後,會呼叫JavaScript的callback函式,DWRUtil的setValue()方法會將傳回的msg設定給指定id的DOM,結果就是…啥!
AJAX的功能在哪…就這個而言就是發出非同步請求,而回應不用Refresh頁面啦!
好啦!
這個無聊的HelloDWR可以做啥!
…XD
已經可以讓您做個簡單的文字提示功能了…像這個…
把滑鼠指到書的照片上,會顯示提示文字,這些提示文字本身不是存在網頁上的,而是在Server端,當滑鼠指到書上時,會用Requestobject去抓,然後顯示在框框中…
當然!
我的網站只支援PHP,所以那不是DWR完成的功能,而且我是直接用Requestobject跟DOM去慢慢刻的…對初學者來說已經有些麻煩了…XD
不過!
用DWR就可以很簡單完成這個功能…
先寫個Java類別吧!
會抓properties檔案中的文字訊息,例如…
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準備好…
java=Java學習筆記的介紹…BlaBla...
spring=Spring技術手冊的介紹…BlaBla...
ajax=Ajaxinaction中文版的介紹…
唔!
裏頭是中文字,自己用native2ascii轉換吧…這也不是重點…我們是要看DWR怎麼做到文字提示功能…
一樣的…要開放這個Book物件,在dwr.xml中…
Book"
scope="
application"
onlyfun.caterpillar.Book"
/>
scope設定為application,表示這個Book物件在整個應用程式階段都活著。
然後,客戶端寫個網頁…
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
dwr/interface/Book.js'
book.js'
個人著/譯作<
ajax"
onmouseover="
getBookData(this);
onmouseout="
clearData();
a
href="
.tw/waweb2004/home/home.aspx?
pg=HM010X&
bn=AXP011800"
small>
img
style="
border:
0pxsolid;
width:
80px;
height:
110px;
float:
left;
alt="
Ajaxinaction中文版"
title="
src="
images/ajax_in_action_c.jpg"
hspace="
10"
vspace="
2"
/small>
/a>
spring"
bn=ACL021000"
Spring技術手冊"
images/SpringTech_S.jpg"
java"
bn=ACL020931"
Java學習筆記"
images/JavaGossip_Cover_Small.jpg"
br/>
info"
重點在於onmouseover跟onmouseout,滑鼠移入與移出時會呼叫的函式,還有最下面的info,抓回來的書籍介紹會放到當中…
book.js如下,簡單的很…
functiongetBookData(ele){
Book.getDescription(ele.id,setBookData);
functionsetBookData(description){
info'
description);
functionclearData(){
'
程式很簡單,我懶得解釋了…XD
看一下畫面好了…這是滑鼠移到Ajaxinaction中文版上的介紹畫面…
假設您要從資料庫中查詢出一些字串,然後填寫到表單的下拉選單中。
例如一個示意的Java程式如下:
publicclassOption{
publicString[]getOptions(){
//實際上這些字串是從資料庫中查到的啦…
returnnewString[]{"
良葛格"
"
毛美眉"
米小狗"
};
傳回的字串陣列,您要填寫到下拉選單中,當然,首先我們要在dwr.xml中開發這個物件…
OPT"
onlyfun.caterpillar.Option"
這是我們的網頁…
scriptsrc="
option.js"
text/javascript"
dwr/interface/OPT.js"
dwr/engine.js"
dwr/util.js"
選項:
selectid="
opts"
/select>
傳回的字串陣列會填入opts這個select中,我們的option.js如下…
window.onload=function(){
OPT.getOptions(populate);
functionpopulate(list){
DWRUtil.removeAllOptions("
DWRUtil.addOptions("
list);
夠簡單了…不需要解釋了…
看一下結果…
我知道有人在說了,這個程式有夠無聊…
改一下!
就是個不錯的範例了,例如連動方塊,唔!
在Ajaxinaction中叫啥?
Dynamicdoublecombo?
假設一個會去從資料庫中查詢資料的Java程式示意如下:
importjava.util.Map;
importjava.util.TreeMap;
publicclassBike{
privateMap<
String,String[]>
bikes;
publicBike(){
bikes=newTreeMap<
();
bikes.put("
2000"
newString[]{"
2000T1"
2000T2"
2000T3"
});
2001"
2001A1"
2001A2"
2002"
2002BW1"
2002BW2"
2002BW"
2003"
2003S320"
2004"
2004TA1"
2004TA2"
2004TA3"
publicString[]getYears(){
String[]keys=newString[bikes.size()];
inti=0;
for(Stringkey:
bikes.keySet()){
keys[i++]=key;
returnkeys;
publicString[]getBikes(Stringyear){
returnbikes.get(year);
getYears()跟getBkies()分別表示產品的年份跟型號,這邊用Map模擬,實際上資料是來自資料庫的查詢。
一樣的,在dwr.xml中設定:
Bike"
onlyfun.caterpillar.Bike"
我們會有個腳踏車年份與型號查詢頁面:
C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DWR 入门与应用 入门 应用