第一步:下載DWR包。
從網站(http://directwebremoting.org/dwr/download)下載最新的dwr.jar包,放在你的Application的WEB-INF/lib目錄下。
第二步:配置web.xml文件。
在web.xml文件的<web-app></web-app>標簽中,添加如下配置:
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文件,內容如下:
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類實例的生成方式。"new"意味著DWR應該調用類的默認構造函數來獲得類的實例,一般我們用這個就可以搞定了。當然還有其它的方式,目前我還沒有用到,就不說了。
javascript="Pict"指定JavaScript代碼訪問Java對象的時候使用的名稱。
標簽指定要公開給JavaScript的java類名。
<include>標簽指定要公開給JavaScript的方法,不指定的話公開所有的方法。
第四步:在JS中調用。
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> |
其中第一個導入的標簽腳本必須是手動寫入,名字和<create>標簽中的屬性JavaScript的值相等,其后綴為.js。你只要在這里手動寫入就可以了,實際由dwr根據配置文件自動生成其內容。util.js和engine.js是dwr自帶的腳本文件。
2. 編寫調用java方法的JS函數。
比如:下面是一個沒有參數,沒有返回值的函數調用。
1 | Function callJava(){ Pict.method1(); } |
如果無參數,有返回值:
1 | Function callJava(){ Pict.method1(retu);//retu稱之為回調函數,實際就是將返回值賦給了這個函數。 } Function retu(data){ Alert(data);//這里的data的值才是實際上的方法method1的返回值。 } |
如果有參數,也有返回值,可直接在方法中加入到回調函數的前面即可。
總的來說,參數和回調函數都放在方法的括號中,遵循的原則是回調函數總是最后一個,有參數就往其前面寫,沒有就不用寫了。
基本上的用法如上,但還有一些細節,比如返回值是JavaBean,Map等,都需要進一步的配置,等俺明天再寫。
文章來源:http://lan0725.blog.chinajavaworld.com/entry/5945/0/