DWR實例詳解

1,請先參閱--DWR中文文檔 v0.9 -- For Dwr 2.0--這是最新版的DWR中文教程,下載DWR相關.jar包和.js文件下載地址: http://directwebremoting.org/dwr/download 找到javascript

Download Version 2.0.5 Size
JAR File: dwr.jar(下載) (490Kb)
WAR File: dwr.war (2.14Mb)
Sources: dwr-2.0.5-src.zip (下載) (20.77Mb)

2,將dwr.jar放到: 你的工程/WEB-INF/lib/下html

   用解壓縮軟件打開-src.zip文件,進入目錄:\/java\org\directwebremoting,找到engine.js和 util.js並將其解壓出來,在 你的工程/WebRoot/ 下新建文件夾 dwr\interface,將engine.js和util.js放在dwr\下java

   如下兩步爲必要的準備工做,若是你要在html中測試dwr的話web

3,打開WEB-INF\web.xml,修改成以下:tomcat

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
     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
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     <servlet>
           <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>服務器

      其中黑體加粗部分爲DWR2.x版的DwrServlet位置,若是用DWR1.x,應改成:
          <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
      開發者應該參考dwr.jar文件中的實際位置寫app

4,寫一個簡單的類文件:ide

package collon;測試

public class Service {
    public String sayHello(String yourName){
   return "Welcome :" + yourName;
    }
}this

5,在WEB-INF\下新建dwr.xml,內容爲下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"            "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
   <create creator="new" javascript="service">
<param name="class" value="collon.Service"/>
   <include method="sayHello"/>
   </create>
</allow>
</dwr>

     注意黑體加粗字,是dwr2.0的標準DTD文檔聲明,其中,javascript="service"爲要生成的,可遠程調用的,javascript方法名

6,啓動tomcat服務器吧

7,打開網頁,輸入http://localhost:8080/你的工程/dwr   按回車,測試吧,會有以下輸出:


    Classes known to DWR:
service (collon.Service)

點service,會進入以下頁面:


Methods For: service (collon.Service)

To use this class in your javascript you will need the following script includes:

<script type='text/javascript' src='/firstDwr/dwr/interface/service.js'></script>
<script type='text/javascript' src='/firstDwr/dwr/engine.js'></script>

In addition there is an optional utility script:

<script type='text/javascript' src='/firstDwr/dwr/util.js'></script>

Replies from DWR are shown with a yellow background if they are simple or in an alert box otherwise.
The inputs are evaluated as Javascript so strings must be quoted before execution.

There are 10 declared methods:


sayHello( ); <script type="text/javascript"></script> (在雙引號中輸入字符串,能夠測試了)...............

8,點擊 '/firstDwr/dwr/interface/service.js' 將其保薦到 \WebRoot\dwr\interface 下

9,新建html頁面,代碼以下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>My Dwr Testing</title>
    <script type='text/javascript' src='/你的工程/dwr/interface/service.js'></script>
    <script type='text/javascript' src='/你的工程/dwr/engine.js'></script>
    <script type='text/javascript' src='/你的工程/dwr/util.js'></script>
    <script type='text/javascript' src='/你的工程/js/first.js'></script>
</head>
<body>
    <input type="text" width="100" id="yourName" /><input type="button" value="Click Me" onclick="demo();" /><br />
    <div id="result"></div>
</body>
</html>

注:請注意各.js文件的位置要準確無誤

10:

創建/你的工程/js/first.js 文件,內容以下:

function demo(){
    service.sayHello($('yourName').value,callback);//注意,service.sayHello是js文件代碼,不是Java類Service.sayHello
    }
function callback(msg){
   DWRUtil.setValue("result",msg);
}

11,輸入頁面測試吧

12,請咱們看一看DwrServlet生成的.js代碼:

// Provide a default path to dwr.engine
if (dwr == null) var dwr = {};
if (dwr.engine == null) dwr.engine = {};
if (DWREngine == null) var DWREngine = dwr.engine;

if (service == null) var service = {};
service._path = '/firstDwr/dwr';
service.sayHello = function(p0, callback) {
dwr.engine._execute(service._path, 'service', 'sayHello', p0, callback);
}

不知道你們看出點什麼沒有

好了,就寫到就裏了,有時間再研究一下 DWR 的 源代碼

相關文章
相關標籤/搜索