// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 **概要 [#h7467cc2] [[DWR(Direct Web Remoting)>http://getahead.org/dwr]]とは、J2EEサーバ上のJavaプログラムをJavaScriptから呼び出すためのライブラリです。Ajaxのライブラリと説明される事が多いですが、サーバ上のJavaクラスのメソッドをhttp経由で呼び出せる一種のRPCってかんじです。わかりにくいですが、[[Flex>http://www.adobe.com/jp/products/flex/]]のRemoteObjectと似てますね。あっちはFlashからJavaクラスをリモート呼出しします。こっちはJavaScriptからJavaクラスをリモート呼出しします。 **ダウンロード [#f5736836] http://getahead.org/dwr/download よりWARをダウンロードします。 **インストール [#gfeb5e2e] インストールは -ダウンロードしたwar内のjarをWEB-INF/libにコピー -web.xmlにブリッジとなるServletを設定 -dwr.xmlにリモート呼び出ししたいJavaクラスを記述してweb.xmlの隣に配置 ってかんじです。 web.xmlには <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> <init-param> <param-name>activeReverseAjaxEnabled</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> などを追加します。 dwr.xmlには <dwr> <allow> <create javascript="HelloWorld" creator="new"> <param name="class" value="nu.mine.kino.services.HelloWorld" /> </create> <convert converter="bean" match="nu.mine.kino.services.Model"/> </allow> </dwr> など、JavaScriptから呼び出したいビジネスロジックが書いてあるクラス(HelloWorld)や、引数や戻り値となるオブジェクト(nu.mine.kino.services.Model)を記述しておきます。このようにしておくと、JSPやHTML内で、 <script type="text/javascript" src="dwr/engine.js"> </script> <script type="text/javascript" src="dwr/util.js"> </script> <script type="text/javascript" src="dwr/interface/HelloWorld.js"> </script> <script type="text/javascript"> function show() { var input = dwr.util.getValue("input"); HelloWorld.sayHello(input,callback); } function callback(message){ dwr.util.setValue("result", message); } </script> などのようにさもJavaScriptすなわちクライアントサイドでJavaクラスを呼ぶような記述でサーバのロジックを呼び出すことができるわけです。 上の例だと dwr/engine.js dwr/util.js dwr/interface/HelloWorld.js は先のブリッジのサーブレットDwrServletが勝手に生成して返してくれます。HelloWorld.jsはサーバ上のビジネスロジックと同じメソッドが定義されているJavaScriptでクライアント側のプロキシとして動作します。 ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}