تشترك هذه المقالة في دورة الحياة ومبدأ العمل في Servlet للرجوع إليه. المحتوى المحدد كما يلي
تنقسم دورة حياة Servlet إلى ثلاث مراحل:
1. استدعاء طريقة init () في مرحلة التهيئة
2. اتصل بالطريقة Service () استجابة لمرحلة طلب العميل
3. استدعاء تدمير () طريقة في مرحلة الإنهاء
مرحلة تهيئة Servlet:
في اللحظات التالية ، تقوم حاوية Servlet بتحميل Servlet:
1. عندما تبدأ حاوية servlet ، يتم تحميل بعض servlets تلقائيًا. لتنفيذها ، تحتاج فقط إلى إضافة الرمز التالي بين <Servlet> </servlet> في ملف web.xml:
<loadon-startup> 1 </loadon-startup>
2. بعد بدء حاوية Servlet ، يرسل العميل طلبًا إلى Servlet لأول مرة
3. بعد تحديث ملف فئة Servlet ، إعادة تحميل servlet
بعد تحميل Servlet ، تقوم حاوية Servlet بإنشاء مثيل Servlet ويدعو طريقة Servlet's INIT () للتهيئة. تسمى طريقة init () مرة واحدة فقط خلال حياة servlet بأكملها.
كيف تعمل servlets:
أولاً ، دعنا نوضح بإيجاز عملية تلقي طلبات العملاء والرد عليها. أولاً ، يرسل العميل طلبًا. يستدعي Servlet طريقة الخدمة () للرد على الطلب. يمكن رؤيته من خلال رمز المصدر. تتوافق طريقة Service () مع طريقة الطلب. حدد لاستدعاء DOGE و DOPOST وطرق أخرى ، ثم أدخل الطريقة المقابلة لاستدعاء طريقة الطبقة المنطقية لتحقيق الاستجابة للعميل. لا توجد طرق مثل Doge و Dopost وما إلى ذلك في واجهة Servlet و Genericservlet. يتم تعريف هذه الطرق في httpservlet ، لكنها جميعها تعيد معلومات الخطأ. لذلك ، في كل مرة نحدد فيها servlet ، يجب أن ننفذ طرقًا مثل Doge أو Dopost.
يجب على كل servlet مخصص تطبيق واجهة servlet. يتم تعريف خمس طرق في واجهة Servlet ، من بينها الأساليب الثلاثة الأكثر أهمية تتضمن دورة حياة Servlet ، وهي الأساليب init () ، و Service () ، و Dorting () المذكورة أعلاه. Genericservlet هو عام ، وليس محددًا لأي بروتوكول ، Servlet ، والذي ينفذ واجهة Servlet. يرث Httpservlet من Genericservlet ، لذلك يقوم Httpservlet أيضًا بتنفيذ واجهة Servlet. لذلك عندما نحدد servlet ، نحتاج فقط إلى ورث httpservlet.
لا تكون واجهة Servlet و Genericservlet خاصة بأي بروتوكول ، في حين أن httpservlet هي فئة محددة لبروتوكول HTTP ، وبالتالي يتم تنفيذ طريقة الخدمة () في httpservlet و servletrequest المطلوبة و servletRespons
خدمة void العامة (servletrequest req ، servletResponse Res) يلقي servleTexception ، ioException {httprequest request ؛ استجابة httpresponse ؛ حاول {req = (httprequest) طلب ؛ res = (httpresponse) استجابة ؛ } catch (classcastException e) {رمي servleTexception جديد ("استجابة طلب HTTP غير HTTP") ؛ } الخدمة (طلب ، استجابة) ؛}يستدعي الرمز أخيرًا طريقة الخدمة الخاصة بـ HTTPServlet (طلب ، استجابة) ، ثم يستدعي طريقة doxxx المقابلة وفقًا للطلب ، لأن طريقة doxxx في معلومات خطأ HTTPservlet لإرجاع.
DOGED VOID المحمي (httpservletrequest res ، httpservletresponse resp) يلقي servletexception ، ioException {string protocol = req.getProtocol () ؛ String msg = isTrings.getString ("http.method_get_not_supported") ؛ if (protocol.equals ("1.1")) {resp.senderror (httpservletresponse.sc.method.not.allowed ، msg) ؛ } esle {resp.senderror (httpservletresponse.sc_bad_request ، msg) ؛ }}لذلك نحن بحاجة إلى تجاوز هذه الطرق في servlet مخصصة!
لا يوجد سر أمام رمز المصدر!
مرحلة طلب استجابة Servlet:
للحصول على طلبات المستخدم للوصول إلى Servlet ، ستقوم حاوية Servlet بإنشاء كائن ServleTRequest وكائن ServleTResponse محدد لهذا الطلب ، ثم اتصل بطريقة خدمة Servlet. تحصل طريقة الخدمة على معلومات طلب العميل من كائن ServletRequest ، وتعالج الطلب ، وإرجاع معلومات الاستجابة إلى العميل من خلال كائن ServleTResponse.
بالنسبة إلى Tomcat ، سيضع المعلمات التي تم تمريرها في علامة تصنيف ، وتعريف علامة التجزئة هو:
نسخة الكود كما يلي: علامة التجزئة الخاصة <string string []> paramHashStringArray = new hashtable <string string []> () ؛
هذه خريطة قيمة مفتاح للسلسلة-> سلسلة [].
خيط HashMap غير آمن ، الخيط القابل للهاوية آمن.
مرحلة إنهاء Servlet:
عند إنهاء تطبيق الويب ، أو تنتهي حاوية Servlet ، أو تقوم حاوية Servlet بإعادة تحميل مثيل جديد من Servlet ، ستستدعي حاوية Servlet أولاً طريقة Servlet () ، والتي يمكن أن تحرر الموارد التي تشغلها Servlet في طريقة التدمير ().
متى يتم إنشاء servlet:
1. بشكل افتراضي ، عندما يطلب عميل الويب الوصول إلى Servlet لأول مرة ، ستقوم حاوية الويب بإنشاء مثيل Servlet.
2. عندما يتم تحديد عنصر الطفل <load-on-startup> في عنصر <Servlet> في ملف web.xml ، ستقوم حاوية servlet بإنشاء وتهيئة كائن Servlet بالترتيب عند بدء تشغيل خادم الويب.
ملاحظة: في ملف web.xml ، تحتوي بعض servlets فقط على عناصر <SerlVet> وليس لديها عناصر <servlet mapping> ، لذلك لا يمكننا الوصول إلى هذه servlets من خلال عنوان URL. عادةً ما تقوم هذه servlet بتكوين عنصر طفل <Load-on-Startup> في عنصر <Servlet> ، بحيث تقوم الحاوية تلقائيًا بتحميل هذه servlets وتدعو طريقة init () عند بدء تشغيلها ، وإكمال بعض أعمال التهيئة العالمية.
متى سيتم بدء تطبيق الويب:
1. عند بدء تشغيل حاوية Servlet ، سيتم بدء جميع تطبيقات الويب.
2. يبدأ وحدة التحكم في تطبيق الويب
مقارنة بين Servlet و JSP:
هناك العديد من أوجه التشابه التي يمكن أن تولد صفحات ويب ديناميكية.
تتمثل ميزة JSP في أنها جيدة في إنتاج صفحات الويب ، وهي أكثر سهولة لإنشاء صفحات ديناميكية ، ولكن العيب هو أنه ليس من السهل تتبع واستكشاف الأخطاء وإصلاحها.
Servlet هي لغة جافا نقية وهي جيدة في عمليات المعالجة ومنطق الأعمال. العيب هو أنه ليس بديهيًا لإنشاء صفحات ويب ديناميكية.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.