第一步:下載DWR包。
從網(wǎng)站(http://directwebremoting.org/dwr/download)下載最新的dwr.jar包,放在你的Application的WEB-INF/lib目錄下。
第二步:配置web.xml文件。
在web.xml文件的<web-app></web-app>標(biāo)簽中,添加如下配置:
1 | <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> |
第三步:配置dwr.xml文件。
在你的Application的WEB-INF下新建dwr.xml文件,內(nèi)容如下:
1 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <allow> <create creator="new" javascript="Pict" scope="application"> <param name="class" value="bean.Pict"/> <include method="method1" /> </create> </allow> </dwr> |
解釋:
creator="new"屬性指定java類實(shí)例的生成方式。"new"意味著DWR應(yīng)該調(diào)用類的默認(rèn)構(gòu)造函數(shù)來(lái)獲得類的實(shí)例,一般我們用這個(gè)就可以搞定了。當(dāng)然還有其它的方式,目前我還沒(méi)有用到,就不說(shuō)了。
javascript="Pict"指定JavaScript代碼訪問(wèn)Java對(duì)象的時(shí)候使用的名稱。
標(biāo)簽指定要公開給JavaScript的java類名。
<include>標(biāo)簽指定要公開給JavaScript的方法,不指定的話公開所有的方法。
第四步:在JS中調(diào)用。
1. 引入JavaScript腳本。
1 | <script language="javascript1.2" src="dwr/interface/Pict.js"></script> <script language="javascript1.2" src="dwr/util.js"></script> <script language="javascript1.2" src="dwr/engine.js"></script> |
其中第一個(gè)導(dǎo)入的標(biāo)簽?zāi)_本必須是手動(dòng)寫入,名字和<create>標(biāo)簽中的屬性JavaScript的值相等,其后綴為.js。你只要在這里手動(dòng)寫入就可以了,實(shí)際由dwr根據(jù)配置文件自動(dòng)生成其內(nèi)容。util.js和engine.js是dwr自帶的腳本文件。
2. 編寫調(diào)用java方法的JS函數(shù)。
比如:下面是一個(gè)沒(méi)有參數(shù),沒(méi)有返回值的函數(shù)調(diào)用。
1 | Function callJava(){ Pict.method1(); } |
如果無(wú)參數(shù),有返回值:
1 | Function callJava(){ Pict.method1(retu);//retu稱之為回調(diào)函數(shù),實(shí)際就是將返回值賦給了這個(gè)函數(shù)。 } Function retu(data){ Alert(data);//這里的data的值才是實(shí)際上的方法method1的返回值。 } |
如果有參數(shù),也有返回值,可直接在方法中加入到回調(diào)函數(shù)的前面即可。
總的來(lái)說(shuō),參數(shù)和回調(diào)函數(shù)都放在方法的括號(hào)中,遵循的原則是回調(diào)函數(shù)總是最后一個(gè),有參數(shù)就往其前面寫,沒(méi)有就不用寫了。
基本上的用法如上,但還有一些細(xì)節(jié),比如返回值是JavaBean,Map等,都需要進(jìn)一步的配置,等俺明天再寫。
文章來(lái)源:http://lan0725.blog.chinajavaworld.com/entry/5945/0/