DWR入門執行個體

來源:互聯網
上載者:User

Java開發人員與網頁設計人員的橋樑DWR,簡介不再多說。

請先到http://getahead.ltd.uk/dwr/
下載 dwr.jar
,放到WEB-INF/lib
下 …

負責處理用戶端請求,並呼叫Java
對象的是DWRServlet
, DWR
其實也有些 Model 2
的味道,只是View
的這一層比較弱,因為放到用戶端的JavaScript
應用程式中 …

在web.xml
中加入DWRServlet…

<?xml version="1.0" encoding="UTF-8"?>  <web-app id="WebApp_ID" 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">      <display-name>dwrtest</display-name>        <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>  

接下來寫個簡單的Hello
吧!

package com.dwr;    public class HelloWorld {      private String name;      public HelloWorld(){                }      public String getName() {          return name;      }      public void setName(String name) {          this.name = name;      }      public String sayHello(String name) {          return "Hello, " + name;      }    }  

用戶端要呼叫這個Java
對象,傳給它參數,而後傳回一個字串,用戶端再顯示這個字串,神奇?其實是要告訴DWRServlet
這件事,這需要一個 dwr.xml,在WEB-INF目錄下建立這個這個檔案:

<!DOCTYPE dwr PUBLIC      "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"      "http://www.getahead.ltd.uk/dwr/dwr10.dtd">    <dwr>    <allow>      <create creator="new" javascript="JDate">        <param name="class" value="java.util.Date"/>      </create>      <create creator="new" javascript="Hello">        <param name="class" value="com.dwr.HelloWorld"/>      </create>    </allow>  </dwr>  

creator設定為new
,表示使用Hello
的無參數建構子來產生對象,javascript
設定為 Hello
,表示用戶端JavaScript
程式可以使用 Hello
來呼叫對應的onlyfun.caterpillar.Hello
物件。

來寫個用戶端的網頁,當中有一個輸入欄位,這裡我們建立一個index.html,內容如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  <title>DWR's  HelloWorld</title>  <script type='text/javascript' src='dwr/interface/Hello.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='hello.js'></script>  </head>  <body>  <input id="user" type="text" /><input type='button' value='哈羅' onclick='hello();' />  <div id="result"></div>  </body>  </html>  

dwr/interface/Hello.js是由DWRServlet
根據 dwr.xml
中的設定產生的,engine.js
負責用戶端伺服端溝通, util.js
是一些好用的JavaScript
程式,可以讓您少寫很多 JavaScript

hello.js是我們自訂的函式,按下按鈕後,會呼叫當中的hello()
函式,因而
需要在當前檔案夾下建立一個hello.js:

function hello(){      var user = $('user').value;      Hello.sayHello(user,callback);  }  function callback(msg){      DWRUtil.setValue('result',msg);  }  

${'user'}取得輸入欄位的DOM
對象,value
取得當中的域值,而後呼叫Hello.hello()
,並將 value
當作參數傳送 …
結果是呼叫Server
端的Hello Java
對象,當結果傳回後,會呼叫 JavaScript
的callback
函式, DWRUtil
的 setValue()
方法會將傳回的msg
設定給指定id
的DOM
,就這個而言就是發出非同步請求,而響應不用Refresh
頁面啦!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.