dwr入門教程和總結,dwr入門教程總結
dwr : http://www.directwebremoting.org/dwr/downloads/index.html
另外還需要一個 commons-logging-1.2.jar,
將dwr.jar 和commons-logging-1.2.jar 放進lib裡面。
先看個入門教材吧,
http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html ,這個寫的很簡單,照著配置就可以實現。
1、實體User
package iwco.entity;public class User {//登陸ID,主鍵唯一private String id;//姓名private String name;//口令private String password;//電子郵件private String email;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}
2、DWRUserAccess類
package iwco.dwrs;import iwco.dao.UserDAO;import iwco.entity.User;public class DWRUserAccess {UserDAO userDAO = new UserDAO(); public boolean save(User user) { return userDAO.save(user); } public User find(String id) { return userDAO.find(id); }}
3、WEB.xml檔案中增加如下內容
<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>
4、在WEB-INF/下面增加dwr.xml 內容如下:
<!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> <create creator="new" javascript="DWRUserAccess"> <param name="class" value="iwco.dwrs.DWRUserAccess"/> </create> <convert converter="bean" match="iwco.entity.User"/> </allow></dwr>
5、test.html頁面
<!DOCTYPE html><html><head><title>test.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--><script src="/dwrTest/dwr/engine.js"></script><script src="/dwrTest/dwr/util.js"></script><script src="/dwrTest/dwr/interface/DWRUserAccess.js"></script><SCRIPT LANGUAGE="JavaScript">function saveFun(data) {if (data) {alert("註冊成功!");} else {alert("登陸ID已經存在!");}}function OnSave() {var userMap = {};userMap.id = regForm.id.value;userMap.password = regForm.password.value;userMap.name = regForm.name.value;userMap.email = regForm.email.value;DWRUserAccess.save(userMap, saveFun);}function findFun(data) {if (data == null) {alert("無法找到使用者:" + queryForm.id.value);return;}alert("找到使用者,nid:" + data.id + ",npassword:" + data.password + ",nname:"+ data.name + ",nemail:" + data.email);}function OnFind() {DWRUserAccess.find(queryForm.id.value, findFun);}//--></SCRIPT></head><body><B>使用者註冊</B><br> ------------------------------------------------<Br><form name="regForm">登陸ID:<input type="text" name="id"><br> 口 令:<inputtype="password" name="password"><br> 姓 名:<inputtype="text" name="name"><br> 電子郵件:<input type="text"name="email"><br> <input type="button" name="submitBtn"value="提交" onclick="OnSave()"><br></form><br><br><B>使用者查詢</B><br> ------------------------------------------------<Br><form name="queryForm">登陸ID:<input type="text" name="id"><br> <inputtype="button" name="submitBtn" value="提交" onclick="OnFind()"><br></form><br></body></html>項目組織圖:
然後允許項目,開啟瀏覽器進行測試即可。下面說說總結吧,我自己很早之前就用過,感覺挺簡單,原理也知道。但前天有個同事問我,說讓給配置一個,當時就想整一個出來,後面想想這東西入門教材很多了。但仔細想想這算是知識點了,記錄下來以後別人問直接給串連地址就行了。
1、在jsp頁面添加三個 js 檔案,分別是:
<script src="/dwrTest/dwr/engine.js"></script><script src="/dwrTest/dwr/util.js"></script><script src="/dwrTest/dwr/interface/DWRUserAccess.js"></script>
前兩個沒說的dwr內建js,第三個才是我們自己的,剛接觸的人肯定納悶了,其實理解了就簡單,我們在dwr裡面有配置:
<create creator="new" javascript="DWRUserAccess"> <param name="class" value="iwco.dwrs.DWRUserAccess"/> </create>
,第三個js的檔案名稱就說javascript的值,且是dwr/interface開頭的目錄。
2、dwr.xml裡面的 create 節點,creator可以配置好幾種:
new:Java用“new”關鍵字創造對象
none:它不建立對象 (v1.1+)
scripted:通過BSF使用指令碼語言建立對象,例如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+)
上面的例子用的是new,現在很多項目都用Spring,所以我給一個spring的:
<create creator="spring" javascript="backUpDocumentService"> <param name="beanName" value="testDWR1" /> <include method="modifyBackUpFiles"></include> <include method="isSafeCodeRight"></include></create> <!-- 加include可以具體指定java類中關的方法,不加則預設類中全部為public的方法 --> <create creator="spring" javascript="testDWR2"> <param name="beanName" value="testDWR2" /></create>
對應的spring檔案裡面添加:
<bean id="testDWR1" class="com.test.testDWR1"></bean><bean id="testDWR2" class="com.test.testDWR2"></bean>
當然註解的話自己處理下吧。