DWR(Direct Web Remoting)是一個用于改善web頁面與Java類交互的遠(yuǎn)程服務(wù)器端Ajax開源框架,可以幫助開發(fā)人員開發(fā)包含AJAX技術(shù)的網(wǎng)站。它可以允許在瀏覽器里的代碼使用運(yùn)行在WEB服務(wù)器上的JAVA函數(shù),就像它就在瀏覽器里一樣。
從DWR官網(wǎng)下載最新版本的jar包,地址:http://directwebremoting.org/dwr/downloads/index.html
將jar包放入WEB-INF的lib文件夾下。同時,dwr依賴于commons-logging.jar這個包,所以必須將這個jar包也放入到WEB-INF的lib文件夾相愛。
首先是配置dwr的環(huán)境:
1. web.xml文件:
dwr-invoker
uk.ltd.getahead.dwr.DWRServlet
debug
true
dwr-invoker
/dwr/*
2. 從官網(wǎng)的jar.war文件中利用winRAR等軟件提取出dwr.xml文件,并將其放入到WEB-INF文件夾下。
dwr.xml是dwr的核心配置文件,主要的標(biāo)簽有:、、這三個標(biāo)簽。
標(biāo)簽是dwr中內(nèi)置的轉(zhuǎn)換器。我們也可以使用自己寫的轉(zhuǎn)換器,不過dwr提供的轉(zhuǎn)換器已經(jīng)足夠了,所以這個標(biāo)簽,一般不會自己去寫。
標(biāo)簽是將converter中定義的轉(zhuǎn)換器映射到的具體類型,如:
-->
標(biāo)簽是dwr中重要的標(biāo)簽,用來描述 java(服務(wù)器端) 與 javascript (客戶端)的交互方式。其基本格式如下:
...其中,creator和javascript是必須屬性,其他可以忽略。creator包含有以下幾個值:
new:Java用“new”關(guān)鍵字創(chuàng)造對象
none:它不創(chuàng)建對象? (v1.1+)
scripted:通過BSF使用腳本語言創(chuàng)建對象,例如BeanShell或Groovy
spring:通過Spring框架訪問Bean
struts:使用Struts的FormBean? (v1.1+)
jsf:使用JSF的Bean? (v1.1+)
pageflow:訪問Weblogic或Beehive的PageFlow? (v1.1+)
ejb3:使用EJB3 session bean? (v2.0+)
關(guān)于這幾個屬性如何使用,這里就不在詳細(xì)闡述了。我只列出一個與spring整合的例子:
spring配置文件
3. 頁面配置
其中engine.js必須要,如果需要用到dwr提供的一些方便的工具要引用util.js?,然后是dwr自動生成的js文件,名字必須和dwr.xml中create標(biāo)簽的javascript屬性值一樣,且是dwr/interface開頭的目錄
4. 接下來就可以分別寫javascript和java代碼了。
javascript代碼:
function testFun() {
var name = "aaaaa";
testDWR1.testFun(name, returnFun);? //調(diào)用java方法,第二個參數(shù)是回調(diào)函數(shù)
}function returnFun(data) {? //data對應(yīng)著java方法的返回值
alert(data);
}
java代碼:
package com.test;
public class testDWR1 {
public String test(String str) {
str += "bbb";
return str;
}
}
5.? 其他
dwr可以設(shè)置是否采用異步方式訪問java代碼,其代碼為:
dwr.engine.setAsync(false);? //false為同步,true(默認(rèn))為異步
以及dwr對于異常的處理,這里我只列出個簡單的全局性異常捕獲,具體到針對某個方法的異常捕獲,大家可以自己上網(wǎng)找找。
dwr.engine.setErrorHandler(errh);
function errh(errorString, exception) {
errorFlag = true;
alert("操作失敗!");
}
dwr同樣支持參數(shù)為對象的方法,這需要在dwr.xml中配置下標(biāo)簽: