DWR3 搭建(轉載)

DWR搭建以及使用教程

http://blog.csdn.net/anluo_sun/article/details/48654093


由於最近要寫一個在線的聊天工具,找到了這個比較不錯的開源工具。 -  DWR (Direct Web Remoting)

最後的架構是希望SSH2 + DWR3實現比較複雜的在線聊天功能。

廢話少說,馬上開始。(開發工具:Eclipse Indigo + Tomcat7)


第一個DWR3程序


第一步:導入需要的兩個Jar包:(下載地址:http://directwebremoting.org/dwr/downloads/index.html)

  • dwr.jar
  • commons-logging-1.1.1.jar

第二步:創建web.xml文件 (目錄在WebContent/WEB-INF/lib/下)

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
  3.     <servlet>  
  4.         <display-name>DWR Servlet</display-name>  
  5.         <servlet-name>dwr-invoker</servlet-name>  
  6.         <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
  7.         <init-param>  
  8.             <param-name>debug</param-name>  
  9.             <param-value>true</param-value>  
  10.         </init-param>  
  11.     </servlet>  
  12.     <servlet-mapping>  
  13.         <servlet-name>dwr-invoker</servlet-name>  
  14.         <url-pattern>/dwr/*</url-pattern>  
  15.     </servlet-mapping>  
  16. </web-app>  
第三步:創建dwr.xml文件 (放在與web.xml同一個目錄下)

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC  
  3.     "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"  
  4.     "http://directwebremoting.org/schema/dwr30.dtd">  
  5. <dwr>  
  6.   <allow>  
  7.     <!-- 注意,Javascript的類名必須要和真正的class名稱一致,否則會報錯 -->  
  8.     <create creator="new" javascript="DwrTest">  
  9.         <!-- 具體在server端實現的類 -->  
  10.         <param name="class" value="com.eztalk.bean.DwrTest"/>  
  11.     </create>  
  12.   </allow>  
  13. </dwr>  
第四步:根據上面暴露出的class,寫具體的類

  1. package com.eztalk.bean;  
  2.   
  3. public class DwrTest {  
  4.     public String test(String message)  
  5.     {  
  6.         System.out.println("get Message:" + message);  
  7.         return "hello: " + message;   
  8.     }  
  9. }  

第五步:寫客戶端的界面:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4.   
  5. <head>  
  6.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7.     <title>DRM3 Test</title>  
  8.     <!-- 注意以下兩個javascript的順序不能隨便改   
  9.     1.第一個是engine.js文件,由dwr.jar包提供  
  10.     2.第二個是根據自己寫的類生成的js文件,格式爲/{app name}/dwr/interface/{在dwr中暴露的javascript類名.js}  
  11.     3.如果對script的寫法不好掌握,可以調用以下URL查看:  
  12.         http://urlname/app name/drw/  
  13.     -->  
  14.     <script type='text/javascript' src='/ezTalk/dwr/engine.js'></script>  
  15.     <script type='text/javascript' src='/ezTalk/dwr/interface/DwrTest.js'></script>  
  16.       
  17.           
  18.     <script type="text/javascript">  
  19.   
  20.         function sendMessage()  
  21.         {  
  22.             var message = document.getElementById("message").value;  
  23.             alert(message);  
  24.             //直接用dwr.xml中暴露出來的類來調用,第一個是方法test的傳入參數,最後一個是回調的方法  
  25.             DwrTest.test(message,showMessage);  
  26.         }  
  27.         //回調方法  
  28.         function showMessage(data)  
  29.         {alert(data);}  
  30.   
  31.         </script>  
  32. </head>  
  33. <body>  
  34.     <input type="text" id="message" name="message" />  
  35.     <input type="button" value="send message" onclick = "sendMessage()" />  
  36.     <div id="returnmessage"></div>   
  37. </body>  
  38. </html>  

第六步:收工測試 -測試OK

eclipse中的目錄結構:


第七步:注意事項

  1. dwr.xml中javascript的名字和類名必須一致,我試着用不同的名字來代替,結果就悲劇了. --糾正一下,這個說法是錯誤的,我重啓了一下Tomcat Sever,用不同的Javascript名字也可以正常運行了。 --Nov-6 2011
  2. dwr自動生成的script腳本在客戶端是有先後順序的,engine.js必須放在前面,自己生成的js文件要放到後面,否則也會報錯。
  3. 最好是根據官方網站的例子來寫,寫法比較標準
  4. 對於客戶端的javascript錯誤,最好用firefox+firebug插件來跟蹤,這裏我犯了幾個錯誤,都是靠firebug發現的,比方說dwr.xml中的javascript class定義錯誤.\
  5. 一點點的耐性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章