الثلاثاء، 19 يونيو 2012

JSP & SERVLETS


بسم الله الرحمن الرحيم

يقوم المشروع على استخدام تقنية J2EE لإنشاء مكونات ويب ديناميكية , وذلك من خلال تطبيق الـ Servlets  و الـ Java Server Pages( JSPs) وغيرها .. وفق تقنية دقيقة وذات كفاءة وفعالية.
بيئة الــJ2EE
تعتبر بنية J2EE بنية مختلفة تضم عدة تقنيات منها servlets , Java Server Pages ,
Enterprise Java Bean…
وتتألف بنية J2EE  من خمس طبقات هي:
Client
Presentation
Business
Integration
Resource

تعتبر كل طبقة قسم منطقي يتضمن عدداً من العناصر تساهم في تشكيل النظام الكلي وترتبط كل طبقة مع الطبقات المجاورة ارتباطاً وثيقاً.
طبقة Client : تضم هذه الطبقة العناصر التي تعد زبائن لتطبيق الويب مثل متصفح الإنترنت أو تطبيق آخر يستخدم خدمات تطبيق الويب.
طبقة Presentation: تغلف منطق العرض. ترتبط مع طبقة Client حيث تقبل طلبات الزبائن request وتعالج المسائل المتعلقة بالوثوقية و السماحية وتدير جلسات الزبائن session. وتسلم هذه الطلبات إلى طبقة Business التي تتولى معالجة الطلبات وفق منطق البرنامج. تعود طبقة Presentation  وتأخذ النتائج من طبقة Business ليتم عرضها للزبون
العناصر التي توجد في هذه الطبقة Servlets , Java Server Pages , Filters
طبقة Business: تعتبر هذه الطبقة أساس تطبيق الإنترنت حيث تتضمن منطق عمل المنظومة التي يمثلها هذا التطبيق تتألف هذه الطبقة من عدة حبيبات java  (Java Beans)
طبقة Integration: دور هذه الطبقة مواءمة الأنماط المختلفة من مصادر البيانات الخارجية الموجودة ضمن طبقة Resource  (قاعدة بيانات , ملف , ...) لكي تتمكن عناصر طبقة Business من الاستفادة منها وتستخدم عناصر طبقة Integration  عدة تقنيات مثل JDBC , JNDI ,
J2EE Connector Technology , ….
طبقة Resource: تتضمن هذه الطبقة الموارد الخارجية التي تؤمن البيانات الفعلية للتطبيق كقواعد البيانات databases والملفات files وتقنيات التحقق من بطاقة المال  credit card



مثال  يوضح الطبقات ودور كل منها:
تطبيق لمتجر إلكتروني لبيع الأجهزة المحمولة متاح عبر الشبكة:
يقوم الزبون بالضغط على رابط لعرض المنتجات فيقوم servlet محدد (ضمن طبقة presentation ) بتلقي طلب الزبون يقوم ال servlet باستخدام أغراض من صفوف تشكل أساس التطبيق (ضمن طبقة business ) تحتاج هذه الأغراض لبيانات مخزنة ضمن قاعدة البيانات تؤمن طبقة integration البيانات المطلوبة عبر استخدام تقنية jdbc للاتصال مع قاعدة البيانات الموجودة ضمن طبقة resource
ما المقصود بالـ Servlet   ؟
-         كيان له علاقة بالمخدم ( server).
-         نموذج تصميم جديد من أجل المخدمات .
-         صف جافا جديد .
-         تقنية جديدة.
تظهر أهمية هذه التقنية الجديدة من خلال مساعدتها للمخدم بالقيام بمسؤولياته التي تتلخص فيما يلي :
1.     معالجة طلبات الزبون client request  .
2.     إنشاء رد راجع response  .
 مع كل ما تتضمنه كل مهمة من مراحل العمل وشروط واجبة التحقق , إضافة إلى أن بعضها قد تتعلق طريقة تنفيذها بنوع المخدم .
الطريقة الوحيدة لجعل المخدم بسيط هي تخديم البيانات الساكنة (static) فقط بحيث يكوّد كل شيء ببرنامج وحيد ومقبول , لكن في الوقت نفسه نحن لا نستطيع كتابة برنامج وحيد يعالج المهمات جميعها. وماذا لو أضيفت وظائف جديدة ؟ وماذا لو تغيرت صيغ البيانات؟
من أجل ذلك كله.... التصميم الأفضل من اجل مخدمات الـ HTTP  هو تقسيم الكود إلى قسمين تنفيذيين:
أحدهما يعالج الشبكة والآخر يؤمن منطق التطبيق , ونجعل كلا القسمين يملكان واجهة بينهما . هذا النوع من التقسيم يجعل من الممكن تعديل الكود وفق منطق التطبيق ودون التأثير على نموذج الشبكة .
البعض يحققون هذا التصميم من أجل مخدمات HTTP باستخدام CGI (Common Getway Interface)  لكن ذلك يحوي العديد من العيوب : إن الفكرة الأساسية من مواقع الويب ذات حركة المرور العالية هي النطاق scalability)) ,وكل استدعاء لطلب يشمل إنشاء وهدم عملية جديدة لتنفيذها على سكريبتات CGI , هذا يعني عدم فعالية عال  جداً خاصة إذا كان السكريبت ينجز روتينات التهيئة مثل الاتصال بقاعدة البيانات . وأكثر من ذلك : اتصال ملف الإدخال و الإخراج بالمخدم يسبب زيادة هامة في زمن الاستجابة الكلي .   
لذلك الطريقة الأفضل تقوم على دعم المخدم لنماذج جزئية يمكن تحميلها إلى الذاكرة وتهيئتها فقط حالما يبدأ المخدم بالعمل (start up) , هذه النماذج تدعى بـ server extensions  .



في الجافا ... الـ server extensions  تكتب باستخدام الـ servlet API(Application  Programming Interface)                                       
            و نماذج الـ server extensions  تدعى بـ servlets

ميزات الـ servlet API :
1.     المرونة  Flexibility : في أي وقت نحتاج فيه لإضافة وظيفة جديدة للمخدم , كل ما علينا فعله هو كتابة servlet معين لمجموعة من المتطلبات وربطه بالمخدم دون تعديل على المخدم نفسه
2.     تجزئة (توزيع) المسؤوليات Separation of responsibilities : المخدم الرئيسي (بذلك) يهتم بالاتصال بالشبكة وقسم الاتصالات بينما تفسير الطلبات requests  وإنشاء الرد المناسب لكل طلب فهي مهمة الـ  servlets  .
3.     الاعتماد على الجافا It’s Java : مبرمجو الجافا ليسوا بحاجة لتعلم لغة script  جديدة وبإمكانهم استخدام الميزات غرضية التوجه التي تؤمنها الجافا .
4.     قابلية النقل Portability : بإمكاننا تطوير واختبار servlet ما على container معين وتوزيعه على آخر . الـ servlet API  مستقلة عن خدمات الويب وعن الـ  containers servlet (علماً أن الـ container servlet هو النموذج الذي يخصص لإدارة الـ servlet ويستخدمه مخدم الويب لتحميل وتنفيذ الـ servlet  )
وهكذا فإن الـ servlet  بشكل عام هو قطعة من الكود تربط بالمخدم الموجود لتوسيعه وظيفياً حيث أنها تستخدم لتوليد الخرج المطلوب ديناميكياً وتخديم طلبات الـ HTTP  .


ما هي صفحة الـ JSP  ؟
هي صفحة ويب تحتوي كود جافا مضمن في واسمات الـ HTML , بحيث أن صفحة الـ JSP هي قالب HTML مكوّن من واسمات الـ JSP الفعالةactive  و واسمات الـ HTML الغير فعالة passive , وعند التنفيذ القالب يستخدم لتوليد صفحة  HTMLترسل إلى الزبون .
تشكل الـ  JSP  طبقة التمثيل presentation layer  في بناء الـ(J2EE) : Sun's Java Enterprise Edition .




Servlet  or JSP  ؟



لذلك يفضل استخدام صفحات الـ JSP  للعرض أي visual presentation  .
بينما تستخدم الـ  servlet للتحكم بسير العمل .
ما هو الـ web application ؟
-         تطبيق يتم الوصول إليه من خلال الويب .
-         الفائدة الأساسية لتطبيق الويب هي سهولة وصول المستخدمين إلى التطبيقات , كل ما يحتاجه المستخدم هو مستعرض ويب ليصبح التطبيق منصباً على جهازه .
-         في الواقع , الـ web application يتألف من servlets عديدة و صفحات JSP  و ملفات HTML  وملفات صور وغير ذلك .. كل هذه المكونات تتناسق مع بعضها البعض وتؤمن مجموعة متكاملة لخدمات المستخدمين .
-         يوصَّف تطبيق الويب باستخدام  deployment descriptor   وهو ملف xml يسمى بـ web.xml يحوي وصفاً لكل المكونات الديناميكية الخاصة بتطبيق الويب , كمثال : هذا الملف يحوي المدخل إلى كل استخدامات الـ servlet في تطبيق الويب , كذلك يبين مظاهر السرية في التطبيق .
مخدم التطبيق Application Server  يستخدم الـ deployment descriptor لتهيئة مكونات تطبيق الويب وجعلها متوفرة للزبائن .
-         بشكل مختصر : web application مجموعة من مكونات الويب التي تنجز مهمات محددة وتسمح بتحقيق منطق العمل عبر مستعرضات الإنترنت .
HTTP Protocol :
Hypertext  Transfer Protocol  بروتوكول معتمد على الثنائية request-response)  )
يمتاز بالصفة stateless أي: حالما يرسل المخدم الرد فإنه ينسى ما يعلمه عن الزبون . بمعنى آخر : رد أي طلب لا يعتمد على أي طلبات قام بها الزبون مسبقاً . من وجهة نظر المخدم : أي طلب هو الطلب الأول من الزبون client .

0 التعليقات:

إرسال تعليق