簡單說它簡化了AJAX的開發在一個以Java為主的WEB應用上
它的範疇主要是在 Javascript to Java 的一種 RPC 框架 跟ZK比起來就比較不一樣了
更進一步解釋就是它能夠讓你在前端的網頁程式中運用 Javascript 遠端呼叫
Java 的程式,也可以讓Javascript 接收 Java 端自定義的 Bean。
以下用一個簡單的範例來呈現 DWR
首先環境是 Apache Tomcat 6,並去http://directwebremoting.org/dwr/downloads/ 下載JAR檔
額外補充的是 DWR 需要用到 Apache 的開源套件 commons-logging
所以還是要去 http://commons.apache.org/logging/download_logging.cgi 在下載JAR檔
下載完成後同樣先透過 Eclipse 建立一個 Dynamic Web Project
並將這兩個 JAR 檔放到 WEB-INF/lib 裡,完成後就可以寫個 Hello world 的程式
第一步驟要先在 WEB-INF/web.xml 加上一段程式
<servlet>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<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>
接著我們 做一個類似遠端的 Service
package org.service; /** * @author allen * */ public class Hello { public String echo(){ return "Hello World"; } }寫完上面的程式之後要在新增 dwr.xml 在 WEB-INF/
這個 xml 檔住要告訴 DWR 有哪些Javascript與Java之間的服務和轉換的Bean等等的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting
2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new"
javascript="Hello">
<param name="class"
value="org.service.Hello" />
</create>
</allow>
</dwr>
上面的 creator="new" 表示會用無參數的建構子產生 org.service.Hello 這個實體
而 javascript="Hello" 表是前端往葉可以透過 Hello 來呼叫 org.service.Hello
最後就可以來看一下一個簡單的網頁裡要如何達到結果
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8"> <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">
function Echo(){
Hello.echo(callBack);//呼叫完echo後會呼叫callBack這個function
}
function callback(message){
DWRUtil.setValue("show", message);
}
</script>
</head>
<body>
<input id="button"
type='button' value='ECHO' onclick=Echo();' />
<br
/>
Result : <br />
<span id=" show "></span>
</body>
</html>
沒有留言:
張貼留言