DWR هو إطار عمل ، وهو ببساطة قادر على استدعاء أساليب Java مباشرة في JavaScript دون الحاجة إلى كتابة الكثير من رمز JavaScript. يعتمد تنفيذها على أياكس ويمكن أن يحقق تأثيرًا خاليًا من التحديث.
هناك العديد من الأمثلة على DWR على الإنترنت ، ولكن معظمها مجرد مكالمات لبعض الطرق. تقدم هذه المقالة DWR فقط على مستوى الاستخدام ، ولا تتضمن المزيد من التكنولوجيا والتصميم. والغرض من ذلك هو تمكين المبتدئين من تعلم بسرعة كيف يتم استدعاء أساليب Java المختلفة في JavaScript.
1. مقالة تكوين DWR Web.xml
1. الحد الأدنى المطابقة
<Srevlet> <Servlet-Name> dwr-invoker </servlet-name> <Servlet-class> uk.ltd.getahead.dwr.dwrservlet </revlet-class> </radlet> <cerdlet-mapping> <servlet-name> dwr-invoker </servlet-name>/dwr/*/url.
2. عندما نريد رؤية صفحة الاختبار (باستخدام وضع التصحيح/الاختبار) الذي تم إنشاؤه تلقائيًا بواسطة DWR ، يمكننا إضافتها إلى تكوين Servlet.
<IRIT-PARAM> <PARAM-NAME> DEBUG </param-name> <Param-value> true </param-value> </IPT-PARAM>
هذه المعلمة DWR خاطئة بشكل افتراضي. إذا اخترت TRUE ، فيمكننا رؤية كل فئة DWR التي تنشرها عبر http: // localhost: port/app/dwr. ويمكنك اختبار ما إذا كانت كل طريقة من رمز Java تعمل بشكل طبيعي. لأسباب تتعلق بالسلامة ، يجب عليك تعيين هذه المعلمة على خطأ في بيئة رسمية.
3. تكوين ملفات dwr.xml متعددة
قد يكون هناك عدة مواقف ، وسوف ندرجها واحدة تلو الأخرى. servlet ، ملفات تكوين dwr.xml متعددة ؛ Servlets متعددة ، كل servlet يتوافق مع ملفات تكوين dwr.xml واحدة أو أكثر.
3.1. servlet ، ملفات تكوين dwr.xml متعددة
<Srevlet> <verlet-name> dwr-invoker </servlet-name> <Servlet-class> uk.ltd.getahead.dwr.dwrservlet </radlet-class> <Ing-param> <param-name> config-1 </param-name> <Param-Name> config-2 </param-name> <Param-value> web-inf/dwr2.xml </param-value> </ith-param> <Ing-param> <param-name> config-2 </parm-name> <Param-value> web-inf/dwr2
في هذا التكوين ، يجب أن تبدأ قيمة Param-Name بالتكوين. يمكن أن يكون لـ Param-Name> = 0. إذا لم يكن هناك اسم param-name ، فسيتم قراءة الويب inf/dwr.xml. إذا كان هناك أكثر من Zero Param-Names ، فلن تتم قراءة ملف الويب inf/dwr.xml.
3.2. servlets متعددة ، كل servlet يتوافق مع واحد أو أكثر dwr.xml
<Srevlet> <Servlet-Name> dwr-invoker </servlet-name> <Servlet-class> uk.ltd.getahead.dwr.dwrservlet </revlet-class> </reserlet> <stervlet> <Sradlet-Name> dwr-invoker1 </servlet-name> <Param-Name> config-admin </param-name> <Param-value> web-inf/dwr1.xml </parm-value> </IPT-param> <Ing-param> <param-name> debug </parm-name> <Param-value> true </param-value> </ith-param> </servlet> <Sradlet-mapping> <Servlet-mapping> <Sradlet-Name> dwr-invoker </servlet-name> <Url-pattern>/dwr/*</url-pattern> </rectlet-mapping> <Cradlet Mapping> <Servlet-Name> dwr-invoker1 </servlet-name> <Url-pattern>/dwr1/*</url-pattern> </stervlet-mapping>
في هذه الحالة ، يمكننا التحكم في الأذونات وفقًا لأمان J2EE ، وإضافة أدوار مختلفة لعناوين URL المختلفة.
2. استخدام DWR
1. استدعاء طريقة Java بدون قيمة الإرجاع والمعلمات
1.1. تكوين dwr.xml
<DWR> <Jet> <إنشاء creator = "new" javaScript = "testClass"> <param name = "class" value = "com.dwr.testClass"/> <include method = "testmethod1"/> </repress> </weth> </swr>
تتضمن العلامات أشياء يمكن أن تتعرض للوصول إلى JavaScript.
تحدد العلامة فئة Java التي يمكن الوصول إليها في JavaScript وتحدد كيف يجب أن تحصل DWR على مثيلات من الفصل لتكون عن بُعد. تحدد سمة Creator = "New" طريقة توليد مثيلات فئة Java. يعني جديد أنه يجب على DWR استدعاء المُنشئ الافتراضي للفئة للحصول على المثيل. يتضمن آخرون طرق الربيع ، والتي يمكن دمجها مع ربيع حاوية IOC للحصول على المثيل ، وما إلى ذلك. تحدد سمة JavaScript = "TestClass" الاسم المستخدم بواسطة رمز JavaScript للوصول إلى الكائن.
تحدد العلامة اسم فئة Java ليتعرض لـ JavaScript.
تحدد العلامة الطريقة التي يتعين تعرضها لجافا سكريبت. إذا لم يتم تحديدها ، سيتم الكشف عن جميع الطرق.
تحدد العلامة طريقة منع الوصول.
1.2. ودعا في جافا سكريبت
أولاً ، قدم نصوص JavaScript
<script src = 'dwr/interface/testclass.js'> </script> <script src = 'dwr/earch.js'> </script> <script src = 'dwr/util.js'> </script>
من بينها ، يتم إنشاء TestClass.js تلقائيًا بواسطة DWR استنادًا إلى ملف التكوين ، و earch.js و util.js هي ملفات نصية تأتي مع DWR.
ثانياً ، اكتب وظيفة JavaScript التي تستدعي طريقة Java
وظيفة calltestmethod1 () {testClass.testmethod1 () ؛}2. استدعاء طريقة Java مع قيمة الإرجاع البسيطة
2.1. تكوين dwr.xml
نفس التكوين مثل 1.1
<DWR> <Jet> <إنشاء Creator = "new" javaScript = "TestClass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testMethod2"/> </repress> </weth> </swr>
2.2. ودعا في جافا سكريبت
أولاً ، قدم نصوص JavaScript
ثانياً ، اكتب وظيفة JavaScript التي تستدعي طريقة Java ودالة رد الاتصال التي تتلقى قيمة الإرجاع.
وظيفة calltestmethod2 () {testClass.testMethod2 (callbackfortestmethod2) ؛} وظيفة callbackfortestmethod2 (data) {// حيث تتلقى قيمة الإرجاع للتاريخ الطريقة // يمكن معالجة قيمة الإرجاع وعرضها هنا ، إلخ. التنبيه ("قيمة العودة" + بيانات) ؛}عندما تكون callbackfortestmethod2 وظيفة رد اتصال تتلقى قيمة الإرجاع
3. استدعاء طريقة Java مع معلمات بسيطة
3.1. تكوين dwr.xml
نفس التكوين مثل 1.1
<DWR> <Jet> <إنشاء Creator = "New" javaScript = "TestClass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testMethod3"/> </repress> </allow> </swr>
3.2. ودعا في جافا سكريبت
أولاً ، قدم نصوص JavaScript
ثانياً ، اكتب وظيفة JavaScript التي تستدعي طريقة Java
الوظيفة calltestmethod3 () {// تحديد بيانات المعلمة var التي سيتم تمريرها إلى طريقة Java ؛ // إنشاء Data data = "test string" ؛ testClass.testMethod3 (البيانات) ؛}4. اتصل بالطريقة Java التي تُرجع جافابان
4.1. تكوين dwr.xml
<DWR> <Jet> <إنشاء creator = "new" javaScript = "testClass"> <param name = "class" value = "com.dwr.testClass"/> <include method = "testmethod4"/> </repart> <convert c match c = "" com.dwr.testbean
العلامات مسؤولة عن تعريض الفئات والأساليب المستخدمة في أجهزة التحكم عن بعد الويب ، في حين أن العلامات مسؤولة عن المعلمات وأنواع الإرجاع من هذه الطرق. تتمثل وظيفة عنصر التحويل في إخبار DWR بكيفية تحويل أنواع البيانات بين تمثيل كائن Java من جانب الخادم وجافا سكريبت المسلسل. يقوم DWR تلقائيًا بضبط أنواع البيانات البسيطة بين تمثيل Java و JavaScript. تتضمن هذه الأنواع أنواع Java الأصلية وتمثيلاتها الفئة المغلفة ، بالإضافة إلى أنواع السلسلة والتاريخ والمصفوفة والتجميع. يمكن لـ DWR أيضًا تحويل Javabeans إلى تمثيل JavaScript ، ولكن لأسباب أمنية ، يتطلب تكوينًا واضحًا ، وتؤدي العلامات هذه الوظيفة. تحدد سمة C طريقة التحويل لاستخدام مواصفات تسمية Javabean ، وتحدد سمة Match = "" com.dwr.testbean "اسم Javabean المراد تحويله ، وتحدد العلامة سمة Javabean التي تم تحويلها.
4.2. ودعا في جافا سكريبت
أولاً ، قدم نصوص JavaScript
ثانياً ، اكتب وظيفة JavaScript التي تستدعي طريقة Java ودالة رد الاتصال التي تتلقى قيمة الإرجاع.
عندما تكون callbackfortestmethod4 وظيفة رد اتصال تتلقى قيمة الإرجاع
5. استدعاء طريقة Java مع معلمات Javabean
5.1. تكوين dwr.xml
<DWR> <Jet> <create creator = "new" javaScript = "testClass"> <param name = "class" value = "com.dwr.testClass"/> <include method = "testmethod5"/> </reveh> <convert c match = "com.dwr.testbean
5.2. ودعا في جافا سكريبت
أولاً ، قدم نصوص JavaScript
ثانياً ، اكتب وظيفة JavaScript التي تستدعي طريقة Java
وظيفة calltestmethod5 () {// تحديد بيانات المعلمة var التي سيتم نقلها إلى طريقة Java ؛ // إنشاء المعلمة ، التاريخ هو في الواقع بيانات كائن = {username: "المستخدم" ، كلمة المرور: "كلمة المرور"} testclass.testmethod5 (data) ؛}وأضف قطاع التكوين التالي إلى dwr.xml
<nigatures> <!
3. من ما سبق ، يمكننا أن نجد أنه بالنسبة للحالة التي تكون فيها قيمة إرجاع طريقة Java هي القائمة (SET) ، يحولها DWR إلى صفيف كائن وتجاوز JavaScript ؛ بالنسبة للحالة التي تكون فيها قيمة الإرجاع لطريقة Java ، تقوم DWR بتحويلها إلى كائن ، حيث تكون سمة الكائن هي القيمة الرئيسية للخريطة الأصلية وقيمة السمة هي القيمة المقابلة للخريطة الأصلية.
4. إذا كانت معلمات طريقة Java هي القائمة (SET) والخريطة ، فيجب أن تقوم JavaScript أيضًا ببناء بيانات JavaScript المقابلة لتمريرها إلى Java وفقًا لثلاثة أنواع من الأشياء.