Java 開發人員與網頁設計人員的橋樑 DWR…呃!我懶得寫簡介了…直接來看看可以做什麼吧!…
請先到 下載 dwr.jar,放到WEB-INF/lib下…
負責處理客戶端請求,並呼叫Java物件的是DWRServlet,DWR其實也有些Model 2的味道,只是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
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee"> <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>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>
1
2
3
4
5
6
7
package onlyfun.caterpillar;
public class Hello {
public String hello(String name) {
return "哈囉!" + name + "!您的第一個DWR!";
}
}
1
2
3
4
5
6
78
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="Hello">
<param value="onlyfun.caterpillar.Hello" />
</create>
</allow>
</dwr>
來寫個客戶端的網頁,當中有一個輸入欄位…
1
2
3
4
5
6
78
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>第一個DWR程式</title>
<script type='text/javascript' src='dwr/interface/Hello.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='hello.js'></script>
</head>
<body>
<input type="text" />
<input type='button' value='哈囉' />
<div></div>
</body>
</html>
hello.js是我們自訂的函式,按下按鈕後,會呼叫當中的hello()函式:
1
2
3
4
5
6
78
function hello() {
var user = $('user').value;
Hello.hello(user, callback);
}
function callback(msg) {
DWRUtil.setValue('result', msg);
}
好啦!這個無聊的Hello DWR可以做啥!…XD
已經可以讓您做個簡單的文字提示功能了…像這個…
把滑鼠指到書的照片上,會顯示提示文字,這些提示文字本身不是存在網頁上的,而是在Server端,當滑鼠指到書上時,會用Request object去抓,然後顯示在框框中…
當然!我的網站只支援PHP,所以那不是DWR完成的功能,而且我是直接用Request object跟DOM去慢慢刻的…對初學者來說已經有些麻煩了…XD
不過!用DWR就可以很簡單完成這個功能…
先寫個Java類別吧!會抓properties檔案中的文字訊息,例如…
1
2
3
4
5
6
78
9
10
11
12
13
14
15
package onlyfun.caterpillar;
import java.util.ResourceBundle;
public class Book {
private ResourceBundle resource;
public Book() {
resource = ResourceBundle.getBundle("book");
}
public String getDescription(String key) {
return resource.getString(key);
}
}
1
2
3
java=Java 學習筆記的介紹 … BlaBla...
spring=Spring 技術手冊的介紹…BlaBla...
ajax=Ajax in action 中文版的介紹…
一樣的…要開放這個Book物件,在dwr.xml中…
1
2
3
4
5
6
78
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="Book" scope="application">
<param value="onlyfun.caterpillar.Book"/>
</create>
</allow>
</dwr>
然後,客戶端寫個網頁…