DWRはフレームワークであり、JavaScriptコードをたくさん書くことなく、JavaScriptでJavaメソッドを直接呼び出すことができます。その実装はAjaxに基づいており、リフレッシュフリー効果を達成できます。
インターネット上のDWRの多くの例がありますが、それらのほとんどは何らかの方法の呼び出しにすぎません。この記事では、使用レベルでDWRのみを紹介し、より多くのテクノロジーと設計を伴うものではありません。目的は、初心者がJavaScriptでさまざまなJavaメソッドがどのように呼び出されるかを迅速に学習できるようにすることです。
1。DWR構成記事web.xml
1。最小マッチング
<Servlet> <Servlet-Name> dwr-Invoker </servlet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservlet </servlet-class> </servlet-mapping> <servlet-name> dwr-invoker </servet-name> <url-pattern>
2。DWRによって自動的に生成されたテストページ(デバッグ/テストモードを使用)を表示する場合、サーブレット構成に追加できます。
<int-param> <param-name> debug </param-name> <param-value> true </param-value> </init-param>
このパラメーターDWRはデフォルトでfalseです。 Trueを選択した場合、http:// localhost:port/app/dwrを介して展開する各DWRクラスを確認できます。また、Javaコードの各メソッドが正常に実行されるかどうかをテストできます。安全上の理由から、正式な環境でこのパラメーターをFalseに設定する必要があります。
3。複数のdwr.xmlファイルの構成
いくつかの状況があるかもしれませんが、それらを1つずつリストします。 1つのサーブレット、複数のDWR.xml構成ファイル。複数のサーブレット、各サーブレットは、1つ以上のDWR.xml構成ファイルに対応しています。
3.1。 1つのサーブレット、複数のDWR.xml構成ファイル
<Servlet> <Servlet-Name> dwr-Invoker </servlet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservlet </servlet-class> <init-param> <param-name> config-1 </param-name> <param-value> web-inf/dwr1.xml <param-name> config-2 </param-name> <param-value> web-inf/dwr2.xml </param-value> </init-param> <init-name> config-2 </param-name> <param-value> web-inf/dwr2.xml </param-value> </init-param> </vervellet
この構成では、param-nameの値はconfigで開始する必要があります。 param-nameは> = 0を持つことができます。Param-Nameがない場合、Web-inf/dwr.xmlが読み取られます。ゼロパラマネームがある場合、web-inf/dwr.xmlファイルは読み取られません。
3.2。複数のサーブレット、各サーブレットは1つ以上のdwr.xmlに対応しています
<Servlet> <Servlet-Name> dwr-Invoker </servlet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservlet </servlet-class> </servlet> <servlet> <servlet> <servlet> <servlet> <servlet-name <param-name> config-admin </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> <init-param> <param-name> debug </param-name> <param-value> true </param-value> </init-param> </servlet> <サーブレットマッピング> <サーブレットマッピング> <サーブレット - name> dwr-invoker </servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <サーブレットマッピング> <サーブレット - name> dwr-invoker1 </servlet-name> <url-pattern>/dwr1/*</url-pattern> </servlet-mapping>
この場合、J2EEセキュリティに従って権限を制御し、異なるURLに異なる役割を追加できます。
2。DWRの使用
1.返品値とパラメーターなしのJavaメソッドを呼び出します
1.1。 dwr.xmlの構成
<DWR> <Aldow> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod1"/> </create> </aopt> </dwr>
タグには、JavaScriptアクセスにさらされる可能性のあるものが含まれます。
タグは、JavaScriptでアクセスできるJavaクラスを指定し、DWRがクラスのインスタンスをリモートにする方法を定義します。 creator = "new"属性は、Javaクラスインスタンスの生成方法を指定します。新しいは、DWRがインスタンスを取得するためにクラスのデフォルトコンストラクターを呼び出す必要があることを意味します。その他には、IOCコンテナスプリングと統合してインスタンスなどを取得できるスプリングメソッドが含まれています。JavaScript= "TestClass"属性は、JavaScriptコードで使用される名前をオブジェクトにアクセスして指定します。
タグは、JavaScriptに公開されるJavaクラス名を指定します。
タグは、JavaScriptに公開される方法を指定します。指定されていない場合、すべてのメソッドが開示されます。
タグは、アクセスを防ぐ方法を指定します。
1.2。 JavaScriptで呼び出されました
まず、JavaScriptスクリプトを紹介します
<スクリプトsrc = 'dwr/interface/testclass.js'> </script> <scrip src = 'dwr/engine.js'> </script> <scrip = 'dwr/util.js'> </script>
その中で、testclass.jsは構成ファイルに基づいてDWRによって自動的に生成され、engine.jsとutil.jsはDWRに付属するスクリプトファイルです。
第二に、Javaメソッドを呼び出すJavaScript関数を書きます
関数calltestmethod1(){testclass.testmethod1();}2。単純な返品値でJavaメソッドを呼び出します
2.1。 dwr.xml構成
1.1と同じ構成
<dwr> <aplas> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod2"/> </create> </aopt> </dwr>
2.2。 JavaScriptで呼び出されました
まず、JavaScriptスクリプトを紹介します
第二に、Javaメソッドを呼び出すJavaScript関数と、返品値を受信するコールバック関数を記述します。
関数calltestmethod2(){testclass.testmethod2(callbackfurtestmethod2);} function callbackfurtestmethod2(data){//日付の返信値はメソッドを受信します//戻り値はここで処理および表示できます。CallBackFurtestMethod2は、返品値を受信するコールバック関数です
3.単純なパラメーターを使用してJavaメソッドを呼び出します
3.1。 dwr.xmlの構成
1.1と同じ構成
<dwr> <aplas> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod3"/> </create> </appro> </dwr>
3.2。 JavaScriptで呼び出されました
まず、JavaScriptスクリプトを紹介します
第二に、Javaメソッドを呼び出すJavaScript関数を書きます
関数calltestmethod3(){// javaメソッドに渡されるパラメーターvarデータを定義します。4。Javabeanを返すJavaメソッドに電話してください
4.1。 dwr.xml構成
<dwr> <aplad> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod4"/> </create> <
タグは、Webリモコンに使用されるクラスと方法を公開する責任がありますが、タグはこれらのメソッドのパラメーターと戻りタイプに責任があります。コンバート要素の機能は、サーバー側のJavaオブジェクト表現とシリアル化JavaScriptの間でデータ型を変換する方法をDWRに伝えることです。 DWRは、JavaとJavaScriptの表現の間で簡単なデータ型を自動的に調整します。これらのタイプには、Javaネイティブタイプと、それぞれのカプセル化されたクラス表現、および文字列、日付、配列、およびコレクションタイプが含まれます。 DWRはJavabeansをJavaScript表現に変換することもできますが、セキュリティ上の理由により、明示的な構成が必要であり、タグはこの関数を実行します。 C属性は、Javabean Naming仕様を使用する変換メソッド、Match = "com.dwr.testbean"属性を変換するJavabeanの名前を指定し、タグがJavabean属性を指定することを指定します。
4.2。 JavaScriptで呼び出されました
まず、JavaScriptスクリプトを紹介します
第二に、Javaメソッドを呼び出すJavaScript関数と、返品値を受信するコールバック関数を記述します。
CallBackFurtestMethod4は、返品値を受信するコールバック関数です
5。Javabeanパラメーターを使用してJavaメソッドを呼び出します
5.1。 dwr.xml構成
<dwr> <aplad> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod5"/> </create> <convert cmate = "com.dwr.testbean"> <param name = "incluad" "username"/dint "
5.2。 JavaScriptで呼び出されました
まず、JavaScriptスクリプトを紹介します
第二に、Javaメソッドを呼び出すJavaScript関数を書きます
関数calltestmethod5(){// javaメソッドに渡されるパラメーターvarデータを定義します。 //パラメーターを作成します、日付は実際にはオブジェクトdata = {username: "user"、password: "password"} testclass.testmethod5(data);}次の構成セグメントをdwr.xmlに追加します
<Signatures> <![cdata [java.util.list; import com.dwr.testclass; import com.dwr.testbean; testclass.testmethod7(map <string、testbean>);]]> </signatures>
3。上記から、Javaメソッドの返品値がリスト(セット)である場合、DWRはそれをオブジェクト配列に変換し、JavaScriptに渡すことがわかります。 Javaメソッドの返品値がMAPである場合、DWRはオブジェクトに変換します。オブジェクト属性は元のマップのキー値であり、属性値は元のマップの対応値です。
4. Javaメソッドのパラメーターがリスト(セット)とMAPの場合、JavaScriptは、対応するJavaScriptデータも構築して、3種類のものに従ってJavaに渡す必要があります。