2011年6月17日金曜日

DWR ~ is Easy Ajax for Java(その1設定)

●今回は, DWR の基本についてです。
□ コンテンツ
-  環境
-  メリット
-  手順

環境
Windows 7  64bit
Tomcat 7                ※Tomcat7 の設定は, 筆者のブログを参照してください
DWR 3.1 rc

DWR  は, Direct Web Remote といって, Java で Ajax を扱うライブラリです。
クライアントサイドは, JavaScript でつくり, 非同期ポストをJavaScript で投げて,
サーバサイドはJava で行うものです。

メリット
Java クラスと, JavaScript 変数の相互変換機能があり, 両方での操作が非常に簡単
Ajax を簡単に実現できる

デメリット
日本語の参考資料が少ないし, 特集している本も少ない

●手順
1.  dwr.jar を取得
http://directwebremoting.org/dwr/index.html

2.  commons-logging.jar を取得
ApacheのWebサイトからとってきてください。

3.  上記の.jar を Tomcat プロジェクトの WEB-INF/lib に入れる

4.  web.xml に以下の記述を加えます。

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <display-name>DWR Servlet</display-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>

DWRServlet クラスを  dwr-invoker という名前で追加  /dwr/ という, URLパターンで追加します。


5.  Java のコードを書く
package com.atmarkplant.dwr;

public class Remote
{
public String getData ( int number )
{
return "AKB" + number;
}
}

今回は, Remote というクラスを作りました。  引数に数字をとって,
文字列を返す単純なものです。


6.  Java Script のコードを書く
<html>
<head>
<script src='../../dwr/interface/Remote.js'></script>
<script src='../../dwr/engine.js'></script>
<script src='../../dwr/util.js'></script>
<script type="text/javascript">
Remote.getData(48, {
  callback:function(str) { alert(str); },
  timeout:5000,
  errorHandler:function(message) { alert("Oops: " + message); }
});
</script>
<body>
</body>
</head>
</html>



実際に, HTMLやJSPで利用するには,
<script src='/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js'></script> // 要は, mappingへのパスを通すわけだ.
<script src='/[YOUR-WEBAPP]/dwr/engine.js'></script>
<script src='dwr/util.js'></script>                         // utilはオプションかな?
と書く必要あります


ここが核です↓

Remote.getData(48, {
  callback:function(str) { alert(str); },
  timeout:5000,
  errorHandler:function(message) { alert("Oops: " + message); }
});

これで, Java(サーバーサイドのRemoteクラスを呼び出し, 返ってきた値を
callback 関数   function(str){  alert(str);}      で処理, (  str がJava 関数の戻り値)
最終的にalert(str) を実行

7.  DWR の設定  dwr.xml  を WEB-INF の中に入れる
赤字は, バージョンによりけり ,  2.0 系なら  20 とすべし。

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">                      

<!-- -->

<dwr>
  <allow>
    <create creator="new" javascript="Remote">
      <param name="class" value="com.atmarkplant.dwr.Remote"/>  //  クラスのパス
    </create>
  </allow>
</dwr>


最終的なフォルダ構成はこんな感じになりました。


8.  テスト
さっそくアクセスしてみましょう。 サーブレットの感覚と同じです。
http://localhost:8080/ServletSample/web/test.html            ←  筆者の環境.




結果はこんな感じです。


次回以降でDWR を詳しくみていきます。 ではでは。





0 件のコメント:

コメントを投稿