السلام عليكــم ورحمـة الله وبركاته ،،
شفنا في الدرس الاول مثال على ال servlet بيطبع جملة Hello World!
حكينا انه ال servlet عبارة عن كلاس جافا عاملة extends للكلاس HttpServlet
وبتورث منها الميثودس اللي فيها
من اهم الميثودز اللي عنا حاليا
init()
service()
destroy()
الميثود init() هيا الميثود الرئيسية في servlet وبتشبه الميثود init() اللي موجودة في الـ applet
بيتم استدعائها مرة وحدة فقط عند استدعاء الـ servlet اول مرة , طبعا مش حتلزمنا في الشغل حاليا.
الميثود service() هيا الميثود اللي بتكون شغالة بعد ما تشتغل الـservlet
يعني الـ Servlet life cycle بتبدأ من استدعاء السيرفر للميثود init حيث يتم انشاء الـ servlet
بعد عملة انشاء الـ servlet تدخل الـ servlet في servicing stat وذلك بعد استدعاء السيرفر للميثود service() وتبقة ال servlet في servicing stat الي ان يستدعي السيرفر الميثود destroy.
طبعا في مثودز كثر غير الثلاثة اللي ذكرتهم فوق بس خلينا نمشي وحدة وحدة
اكثر ميثودز حنستخدمهم هما
doGet()
doPost()
خلينا نشوف مثال على الميثود doGet
كود
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DoGetExample extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res) throws javax.servlet.ServletException, java.io.IOException
{
String username = req.getParameter("username");
PrintWriter pw = res.getWriter();
pw.println("");
pw.println("");
pw.println("");
pw.println("");
pw.println("
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DoGetExample extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res) throws javax.servlet.ServletException, java.io.IOException
{
String username = req.getParameter("username");
PrintWriter pw = res.getWriter();
pw.println("");
pw.println("");
pw.println("");
pw.println("");
pw.println("
Thank you "+username+" for join our JSP course
");
pw.println("");
pw.println("");
} }
نكمل شرح الدرس الثاني
حنروح على المجلد webapps
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps
وحنعمل فيه مجلد جديد ونسميه مثلا hanytest
حنعمل في داخله مجلد جديد ونسميه WEB-INF
حنعمل مجلد جديد داخل مجلد WEB-INF ونسميه classes
في داخل مجلد classes حنعمل ملف جافا ونسميه DoGetExample.java
ونكتب فيه الكود اللي موجود فوق ونعمل كمبايل اله
في داخل مجلد WEB-INF حنعمل ملف ونسميه web.xml
وحنكتب فيه الكود التالي وبنعمل save
كود
في داخل المجلد hanytest حنعمل ملف ونسميه index.html
وحنكتب فيه الكود التالي وبنعمل save
كود
Please enter your name
هيك الملفات جاهزة
طبعا حشرح كل اشي بالتفصيل بعد ما تعملوا الملفات هاي عندكم
حتى اعطي فرصة للي مش نازل عنده السيرفر انه يجهز حاله
اذا في اي استفسار تفضلوا اسألوا
هلاء بدي اشرح الاكواد اللي كتبتهم فوق
ونفهم حبة حبة
نمسك كود السيرفلت اللي عنا
طبعا اول جزئية في كلاس السيرفلت عنا الـ imports وهاي دايما لازم تكون موجودة
بعد هيك عرفنا الكلاس سميناها DoGetExample وعملنا extends للكلاس HttpServlet
حنلاقي بعد هيك ميثود اسمها doGet
طيب الميثود اللي اسمها service اللي شفناها في الدرس الاول وين راحت ؟ شو بتفرق عن doGet
حكينا اول ما بتم استدعاء السيرفلت بتشتغل الميثود init() حتى يتم تكوين الـ servlet
بعد ما يتم انشائها بتدخل الـ servlet تعتنا في مرحلة service وبتكون جاهزة للشغل
طيب متى انا حستخدم الميثود service ?
الميثود service بستخدمها لما بدي اكون اعمل شغل داخلي مثلا يعني اليوزر ملوش دخل فيه
او بدي اطبع صفحة html ممكن استخدمها
طيب شو حكاية goGet و ال doPost ؟
ال doGet و ال doPost بستخدمهم لما بدي اخد قيم من اليوزر واعمل علهم شغل وبعد هيك اطلع الناتج لليوزر
طيب شو الفرق بينهم ؟
doGet بتم ارسال القيم مع ال url اما ال doPost بيتم ارسالها مباشرة للكلاس تعتنا يعني مش حتظهر البيانات تعتي في url
انا هون بدي اشوف كيف الفرق بينهم عشان هيك استخدمت doGet وفي مثال تاني حنستخدم doPost
نرجع للكود تبعنا عند الميثود doGet
الميثود doGet بتاخد قيمتين الاولى HttpServletRequest والتانية HttpServletResponse
وبتعمل throws للاكسبشن من نوع ServletException والاكسبشن من نوع IOException
هون عرفنا سترينج بدنا نحط فيها القيمة اللي بناخدها من اليوزر
عنا req اللي هيا من نوع HttpServletRequest واللي بتتضمن كل القيم اللي اخدناها لليوزر وبتم تحديد القيمة عن طريق اسمها
يعني في html لما اعرف متغير اسمه لازم ما يتكرر عشان اقدر اجيب منه البيانات اللي عايز اشتغل عليها واللي هون معرفينه username
بعد هيك عنا الكود هذا شفناه في الدرس الاول وعرفنا شو هو
الجديد علينا هون
Thank you "+username+" for join our JSP course
اللي هو username طبعا هاي حترجعلنا سترينج
طبعا هون ما ننسى انه احنا بنبرمج جافا يعني هاي الجملة مرة علينا زيها كثير
بدي اطبع قيمة متغير وسط جملة بنعمل زي ما احنا عاملين فوق
نروح هلا على ملف web.xml نشوف شو فيه
قلنا نعتبر الجزئية هاي في الوقت الحالي نسخ لصق لما يجي وقتها حنفهمها
ننتقل للي بعدها
DoGetExample
DoGetExample
هون عرفنا السيرفلت تعتنا حطيت servlet-name نفس اسم ال servlet-class اللي بده يغيره يغيره بكيفه
DoGetExample
/DoGetExample
هون عرفنا كيف حنستدعي السيرفلت تعتنا وحطيتها /DoGetExample
اللي بده يغيرها هو حر
هلا نروح لملف index.html
طبعها اغلب التاجز اللي عنا معروفة الجزئية اللي بتهمنا هية جزئية body
هون حطبع لليوزر جملة Please enter your name بالخط العريض
هون عملت form وحددت الاكشين تبعه على السيرفلت تعتنا فاعطيته اسم الملجد hanytest مسبوق ب /
بعدين اعطيته السيرفلت تعتنا زي ما عرفتها في/DoGetExample تماما
بعد هيك حددت الميثود اللي يبعت من خلالها البيانات للسيرفلت تعتنا method="GET"
هون عملت textfeald عشان اليوزر يدخل فيه اسمه والليبل هو Name واعطيته اسم عشان اتعامل معه فيه username
هون عملت زر لل submit عشان بعد ما يدخل اليوزر اسمه يضغط عليه و يتم ارساله للسيرفلت تعتنا
بعد هيك بنغلق التاجز اللي فتحناها
لو شغلنا السيرفر
وفتحنا المتصفح اللي عنا وكتبنا الرابط
http://localhost:8080/hanytest/
طبعا لازم نتأكد انه كتبنا رقم البورت صح زي ما حطيناه في الاعدادات 8080
اذا حد مغيره يكتبه زي ما هو كتبه عنده
حتفتح عنا صفحة index.html
وحتظهر زي ما مهو مبين بالصورة

حكتب اسمي hany srour
وحضغط على submit
حيتم ارسال اسمي للسيرفلت عن طريق الميثود get
وحيطلعلنا في الصفحة مكتوب
Thank you hany srour for join our JSP course
لو طلعنا على الرابط فوق حنشوف التالي
http://localhost:8080/hanytest/DoGetExampl...name=hany+srour
يعني تم ارسال الاسم من خلال الرابط
وهذا الفرق بين الميثود get والميثود post
الميثود get زي ما شفنا بتظهر البيانات اللي برسلها في الرابط تبع الصفحة يعني الكل بقدر يشوفها
الميثود post مش حيبين اشي في الرابط من البيانات
لو رحنا عدلنا على الكود فوق وحطينا في السيرفلت بدال كلمة doGet حطينا doPost وعملنا كمبايل
ورحنا على الملف index.html وحطينا بدال GET كتبنا POST وعملنا حفظ
وعملنا اعادة تشغيل للسيرفر
وطلبنا الصفحة index.html مرة تانية وكتبنا الاسم hany srour
وضغطنا على submit
حيكتبلنا في الصفحة Thank you hany srour for join our JSP course
لو اطلعنا على الرابط فوق حنلاقيه هيك
http://localhost:8080/hanytest/DoGetExample
هي الفرق بين الميثود get والميثود post
هلا اللي بحب اذكر فيه
انه اليوزر ما بيتعامل مع السيرفلت مباشرة
اليوزر بتعامل مع html وهيا بتتعامل مع السيرفلت
انتهى الدرس الثاني مش حضيف معلومات جديدة عليه بس حعطيكم امثلة اكثر حتى توضح الصورة اكثر
و في الدروس القادمة ان شاء الله الجزئية اللي بشرحها مش حشرحها تاني عشان هيك المتابعة ضرورية
واللي بيحب انه يتعلم بتفاصيل اكثر يحمل الكتاب ويقرأ منه انا تقريبا اغلب شرحي حيكون منه
تحياتي
ونفهم حبة حبة
نمسك كود السيرفلت اللي عنا
طبعا اول جزئية في كلاس السيرفلت عنا الـ imports وهاي دايما لازم تكون موجودة
كود
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
بعد هيك عرفنا الكلاس سميناها DoGetExample وعملنا extends للكلاس HttpServlet
حنلاقي بعد هيك ميثود اسمها doGet
طيب الميثود اللي اسمها service اللي شفناها في الدرس الاول وين راحت ؟ شو بتفرق عن doGet
حكينا اول ما بتم استدعاء السيرفلت بتشتغل الميثود init() حتى يتم تكوين الـ servlet
بعد ما يتم انشائها بتدخل الـ servlet تعتنا في مرحلة service وبتكون جاهزة للشغل
طيب متى انا حستخدم الميثود service ?
الميثود service بستخدمها لما بدي اكون اعمل شغل داخلي مثلا يعني اليوزر ملوش دخل فيه
او بدي اطبع صفحة html ممكن استخدمها
طيب شو حكاية goGet و ال doPost ؟
ال doGet و ال doPost بستخدمهم لما بدي اخد قيم من اليوزر واعمل علهم شغل وبعد هيك اطلع الناتج لليوزر
طيب شو الفرق بينهم ؟
doGet بتم ارسال القيم مع ال url اما ال doPost بيتم ارسالها مباشرة للكلاس تعتنا يعني مش حتظهر البيانات تعتي في url
انا هون بدي اشوف كيف الفرق بينهم عشان هيك استخدمت doGet وفي مثال تاني حنستخدم doPost
نرجع للكود تبعنا عند الميثود doGet
الميثود doGet بتاخد قيمتين الاولى HttpServletRequest والتانية HttpServletResponse
وبتعمل throws للاكسبشن من نوع ServletException والاكسبشن من نوع IOException
كود
String username = req.getParameter("username");
هون عرفنا سترينج بدنا نحط فيها القيمة اللي بناخدها من اليوزر
عنا req اللي هيا من نوع HttpServletRequest واللي بتتضمن كل القيم اللي اخدناها لليوزر وبتم تحديد القيمة عن طريق اسمها
يعني في html لما اعرف متغير اسمه لازم ما يتكرر عشان اقدر اجيب منه البيانات اللي عايز اشتغل عليها واللي هون معرفينه username
بعد هيك عنا الكود هذا شفناه في الدرس الاول وعرفنا شو هو
كود
PrintWriter pw = res.getWriter();
pw.println("");
pw.println("");
pw.println("");
pw.println("");
pw.println("
pw.println("");
pw.println("");
pw.println("");
pw.println("");
pw.println("
Thank you "+username+" for join our JSP course
");
pw.println("");
pw.println("");
الجديد علينا هون
Thank you "+username+" for join our JSP course
اللي هو username طبعا هاي حترجعلنا سترينج
طبعا هون ما ننسى انه احنا بنبرمج جافا يعني هاي الجملة مرة علينا زيها كثير
بدي اطبع قيمة متغير وسط جملة بنعمل زي ما احنا عاملين فوق
نروح هلا على ملف web.xml نشوف شو فيه
كود
قلنا نعتبر الجزئية هاي في الوقت الحالي نسخ لصق لما يجي وقتها حنفهمها
ننتقل للي بعدها
كود
هون عرفنا السيرفلت تعتنا حطيت servlet-name نفس اسم ال servlet-class اللي بده يغيره يغيره بكيفه
كود
هون عرفنا كيف حنستدعي السيرفلت تعتنا وحطيتها /DoGetExample
اللي بده يغيرها هو حر
هلا نروح لملف index.html
كود
Please enter your name
طبعها اغلب التاجز اللي عنا معروفة الجزئية اللي بتهمنا هية جزئية body
كود
Please enter your name
هون حطبع لليوزر جملة Please enter your name بالخط العريض
كود
هون عملت form وحددت الاكشين تبعه على السيرفلت تعتنا فاعطيته اسم الملجد hanytest مسبوق ب /
بعدين اعطيته السيرفلت تعتنا زي ما عرفتها في
بعد هيك حددت الميثود اللي يبعت من خلالها البيانات للسيرفلت تعتنا method="GET"
كود
Name
هون عملت textfeald عشان اليوزر يدخل فيه اسمه والليبل هو Name واعطيته اسم عشان اتعامل معه فيه username
كود
هون عملت زر لل submit عشان بعد ما يدخل اليوزر اسمه يضغط عليه و يتم ارساله للسيرفلت تعتنا
بعد هيك بنغلق التاجز اللي فتحناها
لو شغلنا السيرفر
وفتحنا المتصفح اللي عنا وكتبنا الرابط
http://localhost:8080/hanytest/
طبعا لازم نتأكد انه كتبنا رقم البورت صح زي ما حطيناه في الاعدادات 8080
اذا حد مغيره يكتبه زي ما هو كتبه عنده
حتفتح عنا صفحة index.html
وحتظهر زي ما مهو مبين بالصورة
حكتب اسمي hany srour
وحضغط على submit
حيتم ارسال اسمي للسيرفلت عن طريق الميثود get
وحيطلعلنا في الصفحة مكتوب
Thank you hany srour for join our JSP course
لو طلعنا على الرابط فوق حنشوف التالي
http://localhost:8080/hanytest/DoGetExampl...name=hany+srour
يعني تم ارسال الاسم من خلال الرابط
وهذا الفرق بين الميثود get والميثود post
الميثود get زي ما شفنا بتظهر البيانات اللي برسلها في الرابط تبع الصفحة يعني الكل بقدر يشوفها
الميثود post مش حيبين اشي في الرابط من البيانات
لو رحنا عدلنا على الكود فوق وحطينا في السيرفلت بدال كلمة doGet حطينا doPost وعملنا كمبايل
ورحنا على الملف index.html وحطينا بدال GET كتبنا POST وعملنا حفظ
وعملنا اعادة تشغيل للسيرفر
وطلبنا الصفحة index.html مرة تانية وكتبنا الاسم hany srour
وضغطنا على submit
حيكتبلنا في الصفحة Thank you hany srour for join our JSP course
لو اطلعنا على الرابط فوق حنلاقيه هيك
http://localhost:8080/hanytest/DoGetExample
هي الفرق بين الميثود get والميثود post
هلا اللي بحب اذكر فيه
انه اليوزر ما بيتعامل مع السيرفلت مباشرة
اليوزر بتعامل مع html وهيا بتتعامل مع السيرفلت
انتهى الدرس الثاني مش حضيف معلومات جديدة عليه بس حعطيكم امثلة اكثر حتى توضح الصورة اكثر
و في الدروس القادمة ان شاء الله الجزئية اللي بشرحها مش حشرحها تاني عشان هيك المتابعة ضرورية
واللي بيحب انه يتعلم بتفاصيل اكثر يحمل الكتاب ويقرأ منه انا تقريبا اغلب شرحي حيكون منه
تحياتي
ليست هناك تعليقات:
إرسال تعليق