المؤلف: فصوص كارنيرو
المترجم: سيمون
بيان حقوق الطبع والنشر: أي موقع ويب معتمد من Matrix، عندإعادة الطباعة، يرجى التأكد من الإشارة إلى المصدر الأصلي ومعلومات المؤلف للمقال وهذا البيان في شكل رابط تشعبي المؤلف: Cloves Carneiro;simmone
العنوان الأصلي: http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
العنوان الصيني: http://www.matrix.org.cn/resource/article/43/43926_DWR_AJAX.html
الكلمات الرئيسية: DWR javascript :void(0);">AJAX
ملخص
تشرح هذه المقالة استخدام المشروعمفتوح المصدر DWR (الاتصال المباشر عن بعد عبر الويب) ومفهوم javascript :void(0);">AJAX (Asynchronous JavaScript و XML ) لتحسين سهولة استخدام تطبيقات الويب. يعرض المؤلف خطوة بخطوة كيف يقوم DWR بإنشاء جافا سكريبت :void(0);">تطبيق AJAX بسيط وسريع. (1600 كلمة؛ 20 يونيو 2005)
javascript :void(0);">AJAX، أو JavaScript وXML غير المتزامنين، يصفتقنية تطوير تستخدم مزيجًا من HTML (أو XHTML) وأوراق الأنماط المتتالية للتعبير عن المعلومات لإنشاء تطبيقات ويب تفاعلية؛ نموذجكائن المستند (DOM) )، جافا سكريبت، يعرض المعلومات المعبر عنها ويتفاعل معها ديناميكيًا، ويقوم كائن XMLHttpRequest بتبادل البيانات ومعالجتها بشكل غير متزامن مع خادم الويب.
توضح العديد من الأمثلة على الإنترنت الخطوات الضرورية للتفاعل مع الخادم باستخدام XMLHttpRequest داخل ملف HTML. عند كتابة كود XMLHttpRequest والحفاظ عليه يدويًا، يجب على المطورين التعامل مع العديد من المشكلات المحتملة، خاصة المشكلات مثل توافق تنفيذ DOM عبر المتصفحات. سيؤدي هذا إلى قضاء ساعات لا حصر لها في برمجة وتصحيح كود Javascript، وهو أمر غير مناسب للمطورين بشكل واضح.
يعد مشروع DWR (الاتصال المباشر عن بعد عبر الويب) حلاً مفتوح المصدر بموجب ترخيص Apache للمطورين الذين يرغبون في استخدام javascript :void(0);">AJAX وXMLHttpRequest بطريقة بسيطة. ويحتوي على مجموعة من وظائف Javascript التي تعمل على تبسيطعملية طريقة لاستدعاء كائنات Java على خادم التطبيق من صفحات HTML، فهي تعالج أنواعًا مختلفة من المعلمات مع الحفاظ على سهولة قراءة تعليمات HTML البرمجية.
DWR ليس إدخالًا في التصميم، ولا يجبر الكائنات على استخدام أي نوع من بنية الوراثة. إنه يعمل بشكل جيد مع التطبيقات ضمن إطار عمل servlet. بالنسبة للمطورين الذين يفتقرون إلى خبرة برمجة DHTML، توفر DWR أيضًا مكتبة JavaScript تحتوي على مهام DHTML المستخدمة بشكل متكرر، مثل تجميع الجداول، وملء المربعات المنسدلة المحددة بالعناصر، وتغيير محتوى عناصر HTML مثل <div> و<span .>
موقع DWR شامل ويحتوي على وثائق واسعة النطاق، وهو أساس هذه المقالة. يتم تقديم بعض الأمثلة لتوضيح كيفية استخدام DWR ونوعالعمل الذي يمكن إنجازه باستخدام مكتباتها.
تسمح هذه المقالة للقراء بمعرفة كيفية إنشاء تطبيق ويب باستخدام DWR خطوة بخطوة. سأعرض لك التفاصيل اللازمة لإنشاء نموذج التطبيق البسيط هذا، والذي يمكن تنزيله ونشره في بيئتك لمعرفة كيفية عمل DWR.
ملحوظة: ليس من الصعب العثور على معلومات حول javascript :void(0);">AJAX؛ هناك العديد من المقالات وإدخالات المدونات على الويب التي تغطي هذا الموضوع، يحاول كل منها الإشارة إلى جانب مختلف من المفهوم والتعليق عليه. ستجد في قسم الموارد بعض الروابط المثيرة للاهتمام للأمثلة والمقالات لمعرفة المزيد حول جافا سكريبت :void(0);">AJAX.
نموذج التطبيق <BR>يحاكي نموذج التطبيق المستخدم في هذه المقالة محرك بحث لتأجير الشقق في تورونتو. يمكن للمستخدمين تحديد مجموعة من معايير البحث قبل البحث. من أجل تحسين التفاعل، جافا سكريبت :void(0);">يتم استخدام AJAX في الحالتين التاليتين:
· يقوم التطبيق بإعلام المستخدم بعدد نتائج البحث التي سيتم إرجاعها بناءً على اختياراته. يتم تحديث هذا الرقم في الوقت الفعلي - باستخدام javascript :void(0);">AJAX - عندما يتغير عدد غرف النوم والحمامات التي حددها المستخدم، أو يتغير نطاق السعر. عندما لا يكون هناك عدد كبير جدًا من نتائج البحث المطابقة للمعايير لا يتعين على المستخدم النقر فوق زر البحث.
· يتم الاستعلام عن قاعدة البيانات واسترجاع النتائج بواسطة javascript :void(0);">AJAX. عندما يضغط المستخدم على زر إظهار النتائج، تقوم قاعدة البيانات بإجراء البحث. وبهذه الطريقة، يبدو التطبيق أكثر استجابة، وسيظهر التطبيق بأكمله لا تحتاج الصفحة إلى التحميل الزائد لعرض النتائج.
قاعدة البيانات <BR>قاعدة البيانات التي نستخدمها هي HSQL، وهو محرك قاعدة بيانات Java SQL الذي يستهلك القليل جدًا من الموارد ويمكن تجميعه مع تطبيقات الويب دونالتثبيت والتكوين. يتم استخدام ملف SQL لإنشاء جدول في الذاكرة وإضافة بعض السجلات عند بدء سياق تطبيق الويب.
يحتوي تطبيق Java class <BR> على فئتين رئيسيتين تسمى Apartment وApartmentDAO. فئة Apartment.java هي فئة Java بسيطة تحتوي على خصائص وأساليب getter/setter. ApartmentDAO.java هي فئة الوصول إلى البيانات المستخدمة للاستعلام عن قاعدة البيانات وإرجاع المعلومات بناءً على معايير البحث الخاصة بالمستخدم. يعد تنفيذ فئة ApartmentDAO أمرًا مباشرًا، فهو يستخدم مكالمات اتصال قاعدة بيانات Java مباشرةً للحصول على إجمالي عدد الشقق وقائمة الشقق المتوفرة التي تطابق طلب المستخدم.
تكوين DWR واستخدامه <BR> يعد إعداد استخدام DWR أمرًا بسيطًا: انسخ ملف DWR jar إلى دليل WEB-INF/lib لتطبيق الويب، وأضف إعلان servlet في web.xml، وأنشئ ملف تكوين DWR. مطلوب ملف jar منفصل لتوزيع DWR. يجب عليك إضافة servlet DWR إلى قسم واصف النشر في WEB-INF/web.xml الخاص بالتطبيق الخاص بك.
<سيرفيليت>
<servlet-name>dwr-invocer</servlet-name>
<display-name>DWR Servlet</display-name>
<description>خادم الويب البعيد المباشر</description>
<servlet-class>uk.ltd.getahead.dwr.DWRSServlet</servlet-class>
<init-param>
<param-name>تصحيح</param-name>
<param-value>صحيح</param-value>
</init-param>
</سيرفلت>
<رسم الخرائط servlet>
<servlet-name>dwr-invocer</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
تتمثل الخطوة الاختيارية في ضبط DWR على وضع التصحيح - كما في المثال أعلاه - عن طريق تعيين معلمة التصحيح على true في قسم وصف servlet. عندما يكون DWR في وضع التصحيح، يمكنك رؤية كافة كائنات Java التي يمكن الوصول إليها من صفحة HTML. ستظهر صفحة ويب تحتوي على قائمة بالكائنات المتاحة على عنوان URL /WEBAPP/dwr، والتي تعرض الطرق العامة للكائن. يمكن استدعاء الأساليب المدرجة من الصفحة، مما يسمح لك، لأول مرة، بتشغيل الأساليب على الكائنات الموجودة على الخادم. توضح الصورة التالية كيف تبدو صفحة التصحيح:
صفحة التصحيح
الآن يجب عليك السماح لـ DWR بمعرفة الكائن الذي سيتلقى الطلب عبر كائن XMLHttpRequest. يتم إنجاز هذه المهمة بواسطة ملف تكوين يسمى dwr.xml. في ملف التكوين، يمكنك تحديد الكائنات التي يسمح لك DWR باستدعاءها من صفحة الويب. حسب التصميم، يسمح DWR بالوصول إلى كافة الأساليب العامة للفصل المنشور، ولكن في حالتنا نسمح فقط بالوصول إلى عدد قليل من الأساليب. هنا هو ملف التكوين لمثالنا:
<دور>
<السماح>
<convert converter="bean" match="dwr.sample.Apartment"/>
<إنشاء منشئ = "جديد" javascript = "ApartmentDAO" class = "dwr.sample.ApartmentDAO">
<تشمل الطريقة = "findApartments"/>
<تشمل الطريقة = "countApartments"/>
</إنشاء>
</السماح>
</dwr>
الملف أعلاه يحقق كلا الهدفين في مثالنا. أولاً، تطلب العلامة <convert> من DWR تحويل نوع كائن dwr.sample.Apartment إلى مصفوفة ترابطية، لأنه لأسباب أمنية، لا يقوم DWR بتحويل الحبوب العادية بشكل افتراضي. ثانيًا، تسمح علامة <create> لـ DWR بكشف فئة dwr.sample.ApartmentDAO لاستدعاءات JavaScript؛ ويتم تحديد ملفات JavaScript التي نستخدمها في الصفحة بواسطة سمة javascript. يجب أن ننتبه إلى العلامة <include>، التي تحدد الأساليب المتاحة لفئة dwr.sample.ApartmentDAO.
بعد تكوين كود HTML/JSP <BR>، يمكنك بدء تشغيل تطبيق الويب الخاص بك في هذا الوقت، سيكون DWR جاهزًا لاستدعاء الأساليب المطلوبة من صفحة جانب خادم HTML أو Java (JSP). يمكنك إنشاء ملفات جافا سكريبت. في ملف search.jsp، يجب علينا إضافة واجهة JavaScript التي توفرها DWR، بالإضافة إلى محرك DWR، وإضافة الأسطر الثلاثة التالية إلىالكود الخاص بنا:
<script src='dwr/interface/ApartmentDAO.js'></ البرنامج النصي>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
لاحظنا أنه عندما يقوم المستخدم بتغيير معايير البحث، يكون هذا هو التطبيق الأول لجافا سكريبت :void(0);">AJAX في نموذج البرنامج؛ كما هو كما ترى، يتم تحديث عدد الشقق المتاحة عندما تتغير المعايير. لقد قمت بإنشاء وظيفتين لجافا سكريبت: تعد وظيفة ApartmentDAO.countApartments() هي الجزء الأكثر إثارة للاهتمام، وهي المعلمة الأولى، وهي وظيفة LoadTotal()، التي تحدد طريقة JavaScript سيتم استدعاء DWR عند تلقي استجابة من الخادم، ثم يتم استدعاء LoadTotal لعرض النتائج في <div> لصفحة HTML المستخدمة في السيناريوهات التفاعلية:
function updateTotal() {.
$("resultTable").style.display = 'none';
فار غرف النوم = document.getElementById("bedrooms").value;
فار الحمامات = document.getElementById("الحمامات").value;
فار السعر = document.getElementById("price").value;
ApartmentDAO.countApartments(loadTotal, غرف النوم, الحمامات, السعر);
}
دالة تحميل إجمالي (بيانات) {
document.getElementById("totalRecords").innerHTML = data;
}
من الواضح أن المستخدم يريد رؤية قوائم الشقق التي تتوافق مع معايير البحث الخاصة به. بعد ذلك، عندما يكون المستخدم راضيًا عن معايير البحث الخاصة به وتكون الإجماليات صحيحة، يقوم بالضغط على الزر الذي يعرض النتائج، والذي يستدعي طريقة JavaScript UpdateResults():
نتائج تحديث الوظيفة () {
DWRUtil.removeAllRows("apartmentsbody");
فار غرف النوم = document.getElementById("bedrooms").value;
فار الحمامات = document.getElementById("الحمامات").value;
فار السعر = document.getElementById("price").value;
ApartmentDAO.findApartments(fillTable, غرف النوم, الحمامات, السعر);
$("resultTable").style.display = '';
}
وظيفة ملء الجدول (شقة) {
DWRUtil.addRows("apartmentsbody", Apartment, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
}
تقوم طريقة updateResults() بمسح حقل الجدول الذي يخزن نتائج البحث المرتجعة، وتحصل على المعلمات المطلوبة من واجهة المستخدم، وتمرير هذه المعلمات إلى كائن ApartmentDAO الذي تم إنشاؤه بواسطة DWR. بعد ذلك سيتم تنفيذ استعلام قاعدة البيانات وسيتم استدعاء fillTable()، الذي يوزع الكائن الذي تم إرجاعه بواسطة DWR (الشقق) ويعرضه في الصفحة (apartmentsbody).
عوامل الأمان <BR>لإبقاء المثال مختصرًا، يتم الاحتفاظ بفئة ApartmentDAO بسيطة قدر الإمكان، ولكن عادةً ما تحتوي هذه الفئة على مجموعة من الأساليب المحددة لمعالجة البيانات، مثل Insert() وupdate() وdelete(). يعرض DWR كافة الأساليب العامة التي سيتم استدعاؤها بواسطة كافة صفحات HTML. لأسباب أمنية، ليس من الحكمة الكشف عن طبقة الوصول إلى البيانات الخاصة بك مثل هذا. يمكن للمطورين إنشاء واجهة تعمل على مركزية الاتصال بين جميع وظائف JavaScript ومكونات الأعمال الأساسية، وبالتالي الحد من التعرض المفرط للوظائف.
الاستنتاج <BR>هذه المقالة هي مجرد بداية لاستخدام جافا سكريبت الذي يدعم DWR :void(0);">AJAX في مشاريعك. يتيح لك DWR التركيز على كيفية تحسين نموذج التفاعل لتطبيقك. ، والقضاء على عبء كتابة وتصحيح كود جافا سكريبت التحدي الأكثر إثارة للاهتمام مع جافا سكريبت :void(0);">AJAX هو تحديد مكان وكيفية تحسين سهولة الاستخدام. DWR مسؤول عن تشغيل الاتصال بين صفحة الويب وكائنات Java الخاصة بك، مما يساعدك على التركيز بشكل كامل على كيفية جعل واجهة مستخدم التطبيق الخاص بك أكثر سهولة.
أود أن أشكر ميرسيا أوانسيا وماركوس بيريرا، اللذين قرأا هذا المقال وقدموا تعليقات قيمة للغاية.
الموارد ·javaworld.com:javaworld.com
· مجتمع مطوري Matrix-Java: http://www.matrix.org.cn/
·onjava.com:onjava.com
· قم بتنزيل كافة التعليمات البرمجية المصدرية للبرنامج النموذجي: http://www.javaworld.com/javaworld/jw-06-2005/dwr/jw-0620-dwr.war
·DWR: http://www.getahead.ltd.uk/dwr/index.html
· HSQL: http://hsqldb.sourceforge.net/
·javascript :void(0);">تعريف AJAX: http://en.wikipedia.org/wiki/javascript :void(0);">AJAX
· "javascript :void(0);">AJAX: مسار جديد لتطبيقات الويب": جيسي جيمس جاريت (المسار التكيفي، 2005.2): http://www.adaptivepath.com/publications/essays/archives/000385.php
· "واجهة ويب ديناميكية للغاية" درو ماكليلان (xml.com, 2005.2): http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
·XMLHttpRequest & javascript :void(0);">مثال عمل AJAX: http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples
· "ممارسات XMLHttpRequest القابلة للاستخدام" توماس بايكدال (Baekdal.com, 2005.3): http://www.baekdal.com/articles/Usability/usable-XMLHttpRequest/
·"إرشادات استخدام XMLHttpRequest" توماس بايكدال (Baekdal.com, 2005.2): http://www.baekdal.com/articles/Usability/XMLHttpRequest-guidelines/