logo
BLOGARCHIVEGITHUB
DWR簡單入門
2015年5月16日
Direct Web Remoting
DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible.
新建DWR工程
新建工程DwrEx,將下載的dwr.jar和依賴包commons-logging-1.2.jar放在/WEB-INF/lib目錄下,
web.xml的內(nèi)容為:
<web-app 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/web-app_2_4.xsd"
version = "2.4">
<servlet>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>?
<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>
</web-app>
在/WEB-INF目錄下新建dwr.xml,內(nèi)容為:
<!DOCTYPE dwr PUBLIC
? ? "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
? ? "http://getahead.org/dwr/dwr30.dtd">
<dwr>
? <allow>
? ? <create creator="new" javascript="JDate">
? ? ? <param name="class" value="java.util.Date"/>
? ? </create>
? </allow>
</dwr>
啟動Tomcat,訪問http://localhost:8088/DwrEx/dwr/,可以看到dwr.xml中配置的java.util.Date的所有方法;由于web.xml將參數(shù)debug初始化為true,可以在頁面動態(tài)調(diào)試這些方法。
creator元素
<create ...>用于將服務端的Java類公開給客戶端,一般結(jié)構(gòu)為,
<allow>
? <create creator="..." javascript="..." scope="...">
? ? <param name="..." value="..."/>
? ? <exclude method="..."/>
? ? <include method="..."/>
? </create>
? ...
</allow>
creator屬性設置為new,即使用Java類的new操作獲得實例;
javascript屬性指定從JS訪問對象時使用的名稱(避免使用JS關(guān)鍵字);
scope屬性的默認值為page;
include和exclude屬性分別用于指定允許使用和限制使用的方法。
<allow>
? <create creator="new" javascript="Blah">
? ? <param name="class" value="java.util.Date"/>
? </create>
? ...
</allow>
將java.util.Date公開給Javascript,使用Blah來訪問對象,在JavaScript中調(diào)用Blah.toString(reply)時, 使用默認構(gòu)造器實例化java.util.Date,調(diào)用toString()方法返回數(shù)據(jù)到JavaScript。
convert元素
<convert ...>用于在客戶端和服務端之間序列化數(shù)據(jù),將Java返回類型序列化為JS對象,以及將被傳遞的JS對象序列化為合適的Java對象
<convert converter="bean" match="com.example.Person">
? <param name="exclude" value="property1, property2"/>
</convert>
convertor屬性設置為bean,將JavaBean對象(Person)轉(zhuǎn)化為JavaScript對象;
include/exclude同樣適用于convert,參數(shù)值為變量名而不是方法名。
public class Remoted {
? public void addToFriends(Person p) {
? ? // ...
? }
}
public class Person {
? public void setName(String name) { ... }
? public void setAge(int age) { ... }
? // ...
}
如果Remoted類已經(jīng)配置為create,可以在JS中調(diào)用,
var p = { name:"Fred", age:21 };
Remoted.addToFriends(p);
參考資料
Getting Started with DWR
The Creators
Bean and Object Converters
上一篇下一篇
? 2014 - 2017 Jemoii, powered by Hexo and hexo-theme-apollo.