الاختلافات والاتصالات بين servlets والمرشحات والمستمعين والتقاطعات
1. المفهوم
1.Servlet: Servlet هو تطبيق Java الذي يعمل على تشغيل الخادم ، مع منصة وميزات مستقلة عن البروتوكول ، ويمكنها إنشاء صفحات الويب ديناميكيًا ، والتي تعمل في الطبقة الوسطى بين طلبات العميل واستجابات الخادم.
2.Filter: Filter عبارة عن مقتطف رمز قابل لإعادة الاستخدام يمكن استخدامه لتحويل طلبات HTTP والاستجابات ومعلومات الرأس. المرشح ليس مثل servlet. لا يمكن أن يولد طلبًا أو استجابة. إنه يعدل طلبًا لمورد معين أو يعدل استجابة من مورد معين.
3. المستمع: مستمع ، حرفيًا ، يمكن ملاحظة أن المستمع يستخدم بشكل أساسي للاستماع فقط. من خلال المستمع ، يمكنك الاستماع إلى إجراء تنفيذ في خادم الويب وإجراء استجابات مماثلة وفقًا لمتطلباته.
بعبارات بسيطة ، يعد مكونًا وظيفيًا ينفذ تلقائيًا الكود عند إنشاء كائنات التطبيق والجلسة الثلاثة أو الطلب أو عند إضافة سمات التعديل والإزالة إليه.
4. Interconsuptor: إنها برمجة في اتجاه عرضي ، والتي تتمثل في استدعاء طريقة قبل الخدمة أو طريقة ، أو استدعاء طريقة بعد الطريقة.
على سبيل المثال ، الوكيل الديناميكي هو تطبيق بسيط للاعتراض. يمكنك طباعة سلسلة قبل الاتصال بالطريقة (أو القيام بعمليات منطق أعمال أخرى) ، يمكنك أيضًا طباعة سلسلة بعد الاتصال بالطريقة ، أو حتى القيام بعمليات منطق الأعمال عند رمي استثناء.
5. servlet ، filter ، يتم تكوين المستمع في web.xml ، لم يتم تكوين Interceptor في web.xml ، يتم تكوين التقاطعات في struts.xml. يتم تكوين اعتراض الربيع في spring.xml.
2. ترتيب التحميل
ترتيب تحميل web.xml هو: سياق param -> مستمع -> مرشح -> servlet
3. المسؤوليات
1.Servlet:
(1) إنشاء وإرجاع صفحة HTML كاملة تحتوي على محتوى ديناميكي بناءً على طبيعة طلب العميل
(2) إنشاء جزء من صفحة HTML (جزء HTML) يمكن تضمينه في صفحة HTML موجودة
(3) اقرأ البيانات المخفية التي أرسلها العميل
(4) اقرأ بيانات العرض التي أرسلها العميل
(5) التواصل مع موارد الخادم الأخرى (بما في ذلك تطبيقات قاعدة البيانات وجافا)
(6) إرسال بيانات مخفية إلى العميل من خلال رمز الحالة ورأس الاستجابة.
2. Filter:
(1) يمكن للمرشح أن يعالج طلب المستخدم قبل أن يصل الطلب إلى servlet ، أو يمكنه أيضًا معالجة استجابات HTTP عند مغادرة servlet
(2) قبل تنفيذ Servlet ، قم أولاً بتنفيذ برنامج التصفية وقم ببعض أعمال المعالجة المسبقة لذلك.
(3) تعديل الطلب والاستجابة وفقًا لاحتياجات البرنامج
(4) اعتراض تنفيذ servlet بعد servlet يسمى.
3.listener:
8 واجهات المستمع يتم توفيرها في مواصفات servlet2.4 ، والتي يمكن تقسيمها إلى ثلاث فئات ، على النحو التالي:
(1) واجهة Listne R المتعلقة بـ ServletContext. بما في ذلك: ServletContextListener ، servletContextAttRibtListener
(2) واجهة صالة تتعلق بـ httpsession. بما في ذلك: httpsessionlistner ، httpsessionattributelistener ، httpsessionbindinglistener ، httpsessionactivationlistener
(3) واجهات المستمع المتعلقة بـ ServletRequest ، بما في ذلك: ServletRequestListner ، ServletRequestAtTributEndener
4. الفرق
1.Servlet: عملية servlet قصيرة. بعد إرسال عنوان URL ، تتم معالجته ثم إرجاعه أو تحويله إلى صفحة تحددها أنت. يستخدم بشكل أساسي للتحكم قبل معالجة الأعمال.
2. Filter: العملية مترابطة. بعد إرسال عنوان URL ، بعد التحقق ، يمكن إبقاء العملية الأصلية لأسفل واستلامها بواسطة المرشح التالي ، servlet ، وما إلى ذلك ، وبعد معالجة servlet ، لن تستمر في نقلها إلى الأسفل.
يمكن استخدام وظيفة المرشح للحفاظ على العملية بالطريقة الأصلية ، أو للسيطرة على العملية ، بينما تستخدم وظيفة servlet بشكل أساسي للسيطرة على العملية. يمكن اعتبار المرشح ملحقًا لـ servlet (مسح ناعم).
يمكن اعتبار المرشح "البديل" من servlet. يتم استخدامه بشكل أساسي للمعالجة المسبقة لطلبات المستخدمين ، ويمكن أيضًا تشغيل HttPservletResponse بعد العملية. إنها سلسلة معالجة نموذجية.
الفرق بينه وبين Servlet هو أنه لا يمكن إنشاء استجابة مباشرة للمستخدم.
العملية الكاملة هي: تصفية طلبات مستخدمي المعالجة المسبقة ، ثم يقوم بتسليم الطلبات إلى Servlet لمعالجة وإنشاء استجابة ، وأخيراً تقوم بتصفية استجابة الخادم بعد.
3. قواعد المطابقة
عند إرسال طلب إلى حاوية Servlet ، ستطرح الحاوية أولاً عنوان URL المطلوب إلى مسار سياق التطبيق الحالي باعتباره عنوان URL Servlet Mapping. على سبيل المثال ، أقوم بزيارة http: //localhost/test/aaa.html (سياق التطبيق الخاص بي هو اختبار).
ستقوم الحاوية بإزالة http: // localhost/tes واستخدام الجزء المتبقي /aaa.html لمطابقة رسم خرائط servlet ، أي ، استخدم الجزء المتبقي لمطابقة عنوان url الخاص بـ servlet الذي تم تكوينه في web.xml.
ملاحظة: هناك قواعد معينة لعملية مطابقة رسم الخرائط هذه ، وستتطابق كل مباراة في النهاية فقط. (هذا يختلف عن المرشح)
قواعد مطابقة Servlet: عندما تتطابق Servlet بنجاح ، لن يتم مطابقة أكثر
مطابقة المسار الدقيق:
مثال: على سبيل المثال ، فإن عنوان URL الخاص بـ Servleta هو /اختبار ، وعنوان url من servletb IS /*. في هذا الوقت ، إذا كان عنوان URL I Access هو http: // localhost/test ،
في هذا الوقت ، ستقوم الحاوية أولاً بإجراء مطابقة للمسار دقيقة وتجد أن /الاختبار يتطابق تمامًا مع Servleta ، لذلك اتصل بـ Servleta ولن ينتبه إلى Servlets الأخرى.
مطابقة أطول مسار:
مثال: عنوان URL الخاص بـ servleta هو/اختبار/*، و url-pattern من servletb هو/test/a/*. عند الوصول إلى http: // localhost/test/a ،
ستقوم الحاوية باختيار Servlet مع أطول مسار للمطابقة ، وهو ServletB هنا.
مطابقة التمديد: إذا كان الجزء الأخير من عنوان URL يحتوي على امتداد ، فسيتم تحديد الحاوية Servlet المناسبة بناءً على الامتداد.
مثال: url-pittern of servleta: *. action
4. تهدف جميع Servlets والمرشحات إلى عناوين URL وما إلى ذلك ، بينما يستهدف المستمعون الكائنات ، مثل إنشاء الجلسات وحدوث Session.setTribute ، ويفعلون شيئًا عند حدوث مثل هذه الأحداث.
يمكن استخدامه ل: يدمج Spring الدعامات ، وسمات الحقن في إجراءات الدعامات ، وتنفيذ مهام توقيت تطبيقات الويب ، والإحصائيات على عدد المستخدمين عبر الإنترنت ، إلخ.
5. اعتراض اعتراض ، على غرار المرشح ، ولكن تم تكوينه في struts.xml ، وليس في web.xml ، وليس لعناوين URL ، ولكن للعمل. عندما تقوم الصفحة بتقديم إجراء ،
إن إجراء عمليات التصفية تعادل آلية المكونات الإضافية التي توفرها Struts1.x. يمكن اعتباره الأول هو المرشح الذي توفره Struts1.x ، والتقاطع هو المرشح الذي توفره Struts2.
الاختلافات من المرشح:
(1) لم يتم تكوينه في web.xml ، ولكن تم تكوينه في Struts.xml ، وهو مع الإجراء (2) يمكن أن يحدد الإجراء نفسه أي اعتراض لاستخدامه في القيام بالأشياء قبل استلامه
6. الفرق والاتصال بين المرشحات والاعتراضات في Struts2:
(1) يتم توفير التقاطع بواسطة Struts2 ، بينما يتم توفير المرشحات بواسطة Servlet Standard
(2) يعترض اعتراض الطريقة المستهدفة للعمل المستهدف ، بينما تستهدف المرشحات موارد الويب المختلفة
(3) تم تكوين Interceptor في Struts.xml ، بينما يتم تكوين المرشح في ملف web.xml
(4) يتم تنظيم المقاطعات معًا باستخدام مكدس اعتراض ، بينما يتم ربط المرشحات معًا وفقًا للموارد المعتادة. يتم تحديد ترتيب التنفيذ من خلال موقفهم في ملف التكوين.
(5) تعتمد المعترضات على آلية انعكاس Java ، في حين أن المرشحات تعتمد على عمليات الاسترداد للوظائف.
(6) تعتمد المرشحات على حاويات servlet ، في حين أن التقاطعات لا تعتمد على حاويات servlet.
(7) لا يمكن للاعتراضات العمل إلا على طلبات الإجراءات ، بينما يمكن للمرشحات العمل على جميع الطلبات تقريبًا.
(8) يمكن للاعتراض الوصول إلى الكائنات في سياق الإجراء ومكدس القيمة ، ولكن لا يمكن للمرشح.
(9) خلال دورة حياة العمل ، يمكن استدعاء التقاطع عدة مرات ، في حين لا يمكن استدعاء المرشح إلا مرة واحدة عند تهيئة الحاوية.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!