Java Servlets – دورة الحياة

Java Servlets

يمكن تعريف دورة حياة servlet بأنها العملية بأكملها منذ إنشائها وحتى تدميرها. فيما يلي المسارات التي يتبعها servlet.

1 – تتم تهيئة servlet عن طريق استدعاء طريقة init().
2 – يستدعي servlet أسلوب الخدمة () لمعالجة طلب العميل.
3 – يتم إنهاء servlet عن طريق استدعاء طريقة التدمير ().
4 – أخيرًا، servlet تكون عبارة عن كود منتهي ومتوقف ويتم جمعه بواسطة جامع القمامة في JVM.

الآن دعونا نناقش أساليب دورة الحياة بالتفصيل.

طريقة وأسلوب init()

يتم استدعاء أسلوب init مرة واحدة فقط. يتم استدعاؤه فقط عند إنشاء servlet، ولا يتم استدعاؤه لأي طلبات مستخدم بعد ذلك. لذلك، يتم استخدامه للتهيئة لمرة واحدة، تمامًا كما هو الحال مع طريقة init للتطبيقات الصغيرة.

يتم إنشاء servlet عادةً عندما يقوم المستخدم باستدعاء عنوان URL المتوافق مع servlet لأول مرة، ولكن يمكنك أيضًا تحديد تحميل servlet عند بدء تشغيل الخادم لأول مرة.

عندما يقوم مستخدم باستدعاء servlet، يتم إنشاء مثيل واحد لكل servlet، وينتج عن كل طلب مستخدم موضوع جديد يتم تسليمه إلى doGet أو doPost حسب الاقتضاء. تقوم طريقة init() ببساطة بإنشاء أو تحميل بعض البيانات التي سيتم استخدامها طوال عمر servlet.

يبدو تعريف أسلوب init هكذا

public void init() throws ServletException {
   // Initialization code...
}

طريقة وأسلوب service()

طريقة service() هي الطريقة الرئيسية لأداء المهمة الفعلية. تستدعي حاوية servlet (أي خادم الويب) طريقة service() للتعامل مع الطلبات الواردة من العميل (المتصفحات) وكتابة الاستجابة المنسقة مرة أخرى إلى العميل.

في كل مرة يتلقى الخادم طلبًا لـ servlet، يقوم الخادم بإنشاء سلسلة رسائل جديدة وخدمة المكالمات. يتحقق أسلوب service() من نوع طلب HTTP (GET، وPOST، وPUT، وDELETE، وما إلى ذلك) ويستدعي أساليب doGet، وdoPost، وdoPut، وdoDelete، وما إلى ذلك حسب الاقتضاء.

هنا هو التوقيع على هذه الطريقة

public void service(ServletRequest request, ServletResponse response) 
   throws ServletException, IOException {
}

يتم استدعاء طريقة service() بواسطة الحاوية، وتستدعي طريقة الخدمة أساليب doGet، وdoPost، وdoPut، وdoDelete، وما إلى ذلك حسب الاقتضاء. لذلك ليس لديك أي علاقة بطريقة الخدمة () ولكنك تتجاوز إما doGet () أو doPost () اعتمادًا على نوع الطلب الذي تتلقاه من العميل.

تعتبر doGet() و doPost() من الطرق الأكثر استخدامًا في كل طلب خدمة. هنا هو توقيع هاتين الطريقتين.

طريقة وأسلوب doGet()

ينتج طلب GET عن طلب عادي لعنوان URL أو من نموذج HTML لا يحتوي على طريقة محددة ويجب التعامل معه بواسطة طريقة doGet().

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

طريقة وأسلوب doPost()

ينتج طلب POST من نموذج HTML الذي يسرد POST على وجه التحديد كطريقة ويجب التعامل معه بواسطة طريقة doPost().

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

طريقة وأسلوب destroy()

يتم استدعاء طريقة destroy() مرة واحدة فقط في نهاية دورة حياة servlet. تمنح هذه الطريقة servlet الخاص بك فرصة لإغلاق اتصالات قاعدة البيانات، وإيقاف سلاسل العمليات الخلفية، وكتابة قوائم ملفات تعريف الارتباط أو عدد مرات الوصول إلى القرص، وتنفيذ أنشطة التنظيف الأخرى المشابهة.

بعد استدعاء أسلوب destroy()، يتم وضع علامة على كائن servlet لجمع البيانات المهملة. يبدو تعريف طريقة التدمير هكذا

public void destroy() {
   // Finalization code...
}

المخطط الإنشائي

يوضح الشكل التالي سيناريو دورة حياة servlet النموذجي.

1 – يتم تفويض طلبات HTTP القادمة إلى الخادم إلى حاوية servlet.
2 – تقوم حاوية servlet بتحميل servlet قبل استدعاء طريقة الخدمة ().
3 – ثم تتعامل حاوية servlet مع طلبات متعددة عن طريق إنتاج سلاسل رسائل متعددة، حيث يقوم كل خيط بتنفيذ طريقة الخدمة () لمثيل واحد من servlet.

servlet lifecycle

Related posts

JDBC – تطبيق بسيط

JDBC – بناء جملة SQL

JDBC – مقدمة