English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يمكن تعريف دورة حياة Servlet بأنها العملية بأكملها من إنشائه حتى تدميره. إليك العملية التي يتبعها Servlet:
يتم استدعاء Servlet بعد التشغيل init () الطريقة.
Servlet استدعاء Servlet لمعالجة طلبات العميل.
يتم استدعاء الطريقة قبل تدمير Servlet destroy() الطريقة.
في النهاية، يتم إزالة Servlet بواسطة مجمع القمامة لمحرك JVM.
دعونا الآن نتناول بتفصيل طرق الحياة.
تم تصميم方法是 لتتم مكالمته مرة واحدة فقط. يتم استدعاؤه عند إنشاء Servlet لأول مرة، ولا يتم استدعاؤه مرة أخرى عند كل طلب مستخدم. لذلك، يُستخدم للاعداد الابتدائية، مثل方法是 لـ Applet.
Servlet يتم إنشاؤه عند أول مرة يتم فيها استدعاء URL تخصه Servlet، ولكن يمكنك أيضًا تحديد أن يتم تحميل Servlet عند بدء تشغيل الخادم لأول مرة.
عندما يتم استدعاء Servlet من قبل المستخدم، يتم إنشاء مثال Servlet، ويُخلق خيط جديد لكل طلب مستخدم، ويُنقل في الوقت المناسب إلى طريقة doGet أو doPost. تُقوم طريقة init بإنشاء أو تحميل بعض البيانات، والتي سيتم استخدامها خلال حياة Servlet.
تعريف طريقة init كالتالي:
public void init() throws ServletException { // كود التمهيد... }
طريقة service() هي الطريقة الرئيسية للتنفيذ. يُدعى service() بواسطة محول Servlet (أي خادم الويب) لمعالجة الطلبات من العملاء (المتصفح) ويُكتب الرد الم格式ات بشكل صحيح إلى العملاء.
عندما يتلقى الخادم Servlet طلبًا، يتم إنشاء خيط جديد ويُدعى بهذا الخيط خدمة. تُتحقق طريقة service() من نوع الطلب HTTP (GET، POST، PUT، DELETE وما إلى ذلك) وتُدعى في الوقت المناسب طريقة doGet، doPost، doPut، doDelete وما إلى ذلك.
إليك خصائص هذه الطريقة:
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{ }
تُدعى طريقة service() بواسطة المحول، وتُدعى طريقة service في الوقت المناسب طريقة doGet، doPost، doPut، doDelete وما إلى ذلك. لذا، لا تحتاج إلى القيام بأي شيء تجاه طريقة service()، بل يجب عليك فقط إعادة كتابة doGet() أو doPost() بناءً على نوع الطلب من قبل العملاء.
طريقة doGet() و طريقة doPost() هي أكثر الطرق استخدامًا في كل طلب خدمة. إليك خصائص هاتين الطريقتين.
طلب GET يأتي من طلب عادي لـ URL أو من نموذج HTML لم يتم تحديد METHOD له، يتم معالجته بواسطة طريقة doGet().
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // كود Servlet }
طلب POST يأتي من نموذج HTML معين تم تحديد METHOD له على POST، يتم معالجته بواسطة طريقة doPost().
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // كود Servlet }
يُطلق destroy() مرة واحدة فقط، عند انتهاء حياة Servlet. يمكن أن يستخدم destroy() لإنهاء اتصالات قاعدة البيانات، إيقاف الخلفيات، كتابة قائمة الكوكي أو عداد النقرات إلى القرص، وإجراء أنشطة تنظيف مشابهة.
بعد إجراء destroy()، يتم تعيين عنصر servlet كشيء للإزالة.
public void destroy() { // كود التدمير... }
تظهر الصورة التالية مخطط حياة Servlet نموذجيًا.
يُولى الطلب HTTP الأول الوارد إلى محول Servlet.
يحمّل محول Servlet Servlet قبل إجراء service().
ثم يعالج محول Servlet عدة طلبات تنتجها عدة ثغرات، حيث يفعل كل ثغرة تنفيذ طريقة service() لمثال Servlet واحد.