شـبـكــة عـمّـــار
إخبارية - ترفيهية
- تعليمية



جديد الصور
جديد الأخبار
جديد المقالات


جديد الصور

جديد البطاقات

جديد الصوتيات

المتواجدون الآن


تغذيات RSS

2012-08-09 01:25

السلسلة : تطوير تطبيقات الويب

المستوى : متوسط-متقدم

الدرس : 3

===================================


السلام عليكم و رحمة الله و بركاته


اليوم سوف نكتب أول سيرفلت و نقوم بتنفيذها إن شاء الله و نتعرف أيضا على الأجزاء الرئيسية في السيرفلت .


بسم الله


ال Servlet مثلها مثل أي شئ في الجافا عبارة عن كائن يتم تنفيذها داخل السيرفر و هي تقوم باستلام طلبات (Requests) من الزبون و ارسال ردود (Response) هذا الكائن يتنمي إلى الكلاس GenericServlet .

يمكنك استخدام هذه السيرفلت لتطوير و تحسين أي نوع من المزودات التي تعتمد اسلوب الطلب و الرد و إضافة و ظائف جديدة لها سواء كانت هذه المزودات مزودات بريد أو ftp أو غيرها و ليس مزود ويب فقط


و بحكم أن أغلب التطبيقات عبارة عن تطبيقات ويب فيوجد هناك كائن آخر يسمى HttpServlet مستمد من GenericServlet يستلم طلبات HttpServletRequest مستمدة من Request و ترسل رد HttpServletResponse مستمد من Response ،

وهذا النوع من السيرفلت هو الذي سنتكلم عنه في هذه السلسلة.



مثال لـ HttpServlet

======================


لتجربة المثال السابق احفظ الملف باسم HelloWorld.java وقم بتخزينه في c: omcatclasses حوّل (Compile) الملف إلى class. قم بتشغيل التومكات (مهم: بعد تحويل الملف) ثم اكتب العنوان التالي داخل المتصفح :







http://localhost:8080/servlet/Helloworld






شرح المثال

============


إذا أردنا أن نكتب سيرفلت فكل ما علينا أن نفعله هو استمداد extends (إذا تعرف ترجمة أفضل فأخبرنا) للكلاس HttpServlet





كما يجب أن نضيف جزء الاستثناءات Exceptions كما في المثال السابق.


تتكون الـ HttpServlet من طريقتين أساسيتين doGet و doPost تستلم الأولى طلبات GET و الأخرى POST حسب الطريقة المحددة في استمارة Form ال HTML ، بالتحديد الخيار method مثال على ذلك :






<form action="some_path_name/servlet/myServlet" methode="Post">











في هذا المثال في حالة تنفيذ الفورم سيتم استدعاء الطريقة doPost للسيرفلت myServlet الموجودة في some_path_name

كل طريقة من الاثنتين تأخذ HttpServletRequest و HttpServletResonse . يحتوي HttpServletRequest على

جميع المعلومات المرتبطة بالطلب الذي تم استلامه مثل نوع المتصفح

أما HttpServletResponse فيحتوى على عدد كبير من الامكانيات التي تمكننا من التحكم في الرد و محتواه مثل ContentType أو Http Headers و أشياء أخرى كثيرة .

في هذا المثال استخدمنا الطريقة getWriter من HttpResponse لفتح قناة اخراج output بين الرد HttpServletResponse و PrintWriter . وهذه هي الطريقة القياسية لاعادة نص (غالبا html) للمتصفح بعد أن أنهي العمليات المطلوبة من السيرفلت.


لنقوم بتعديل المثال السابق حتى نعيد المخرجات منسقة بال HTML




ملاحظة : إقرأ الملاحظات العربية بالعكس !!!



دورة حياة الـ HttpServlet

===================



1- تحميل الـ Servlet

عند تحميل السيرفلت في الذاكرة لتصبح جاهزة لاستقبال الطلبات ، يقوم المزود باستدعاء هذه الطريقة آليا :












public void init() throws ServletException








تستدعى مرة واحدة فقط و ليس عند كل طلب ، استخدم هذه الطريقة لوضع الكود الذي تحتاج تنفيذه عند المرة الأولى فقط ، مثل تحميل اعدادت التطبيق أو فتح خطوط اتصال مع قواعد البيانات


2- عند وصول الطلب HttpServletRequest

في كل مرة يصل طلب للسيرفلت يتم استدعاء هذه الطريقة :







public void service(HttpServletRequest,

HttpServletResponse) throws ServletException, IOException







وتقوم هي بتالي باستدعاء doGet, doPost حسب الطريقة المحددة في الـ Form method لمزيد من المعلومات يمكنك الاطلاع على دروس الـ HTML في الموسوعة .
لا تغير هذه الطريقة ابدا



4- doGet و doPost





public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException



public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException










يتم تنفيذ احدى الطرقتين السابقتين بعد طريقة service حسب نوع الـطلب القادم من المتصفح GET أو POST


5- destory






public void destroy()




يتم استدعاء هذه الطريقة مباشرة قبل ازالة السيرفلت من الذاكرة . و لا يتم استدعاءها بعد كل طلب


تعليقات 0 | إهداء 0 | زيارات 660


خدمات المحتوى
  • مواقع النشر :
  • أضف محتوى في Digg
  • أضف محتوى في del.icio.us
  • أضف محتوى في StumbleUpon
  • أضف محتوى في Google


تقييم
6.22/10 (10 صوت)


Powered by Dimofinf cms Version 3.0.0
Copyright© Dimensions Of Information Inc.