Filter عبارة عن مقتطف رمز قابل لإعادة الاستخدام يمكن استخدامه لتحويل طلبات HTTP والاستجابات ومعلومات الرأس. المرشح ليس مثل servlet. لا يمكن أن يولد طلبًا أو استجابة. إنه يعدل طلبًا لمورد معين أو يعدل استجابة من مورد معين.
في الآونة الأخيرة ، عند استخدام البرمجة النصية ، استخدمت ملفات تعريف الارتباط لتحديد الكمبيوتر ، والتصفية المضافة ، و Servlets و Filters التي تمت دراستها بعناية. الفرق الرئيسي هو:
تمر دورة حياة المرشح عمومًا عبر المراحل الثلاث التالية:
خصائص servlets هي:
التهيئة
يتم استدعاء طريقة init () عندما تقوم الحاوية أولاً بتحميل المرشح. تحتوي هذه الفئة على مرجع إلى كائن تكوين التصفية في هذه الطريقة. لا تحتاج مرشحاتنا في الواقع إلى القيام بذلك ، حيث لا توجد معلومات تهيئة مستخدمة ، وهنا فقط لأغراض التوضيح.
فلتر
يتم استهلاك معظم وقت المرشح هنا. يتم استدعاء طريقة Dofilter بواسطة الحاوية ، ويتم تمرير إشارات إلى طلب Servlet ، استجابة Servlet وسلسلة التصفية في سلسلة الطلب/الاستجابة في نفس الوقت. ثم يتمتع المرشح بفرصة معالجة الطلب ، وتمرير مهمة المعالجة إلى المورد التالي في السلسلة (عن طريق استدعاء طريقة dofilter على مرجع كائن سلسلة المرشح) ، ثم معالجة الاستجابة عند إرجاع التحكم في المعالجة إلى المرشح.
دمار
تستدعي الحاوية طريقة تدمير () مباشرة قبل جمع القمامة لتتمكن من تنفيذ أي رمز تنظيف مطلوب.
بخصوص سلسلة. يشير التالي هنا إلى المرشح التالي ، إذا لم يكن هناك مرشح ، فهو المورد الذي طلبته. بشكل عام ، تكون المرشحات سلسلة واحدة ، ولا يوجد سوى تكوينات قليلة في web.xml. متصل واحد تلو الآخر
طلب -> filter1 -> filter2 -> filter3 -> .... - -> طلب مورد.
المرشح هو عملية سلسلة ، لذلك عند معالجة مرشح واحد ، يجب عليك أخيرًا الانتقال إلى Servlet للرد على الطلب.
إذا مررت بالسلسلة ، فإن طريقة السلسلة. تتمثل طريقة تصفية الاتصال في تكوينه في web.xml ، وتحتاج إلى تكوين نماذج عناوين URL التي هي نفس servlet التي تحتاج إلى اعتراضها.
<!-تكوين مرشح-> <filter> <filter-name> suibianxie </filter-name> <ilter-class> com.etoak.filter.myencoding </filter-class> <!-تكوين معلمة خاصة-> <ith-param> <Iram-name> mycode </param-name> </filter> <!-ترتيب اعتراض يرتبط بترتيب رسم الخرائط-> <مرشح mapping> <filter-name> suibianxie </filter-name> <!-لاحظ أن هذا يجب أن يكون متسقًا مع url-pattern of the servlet/test </erl-pattern> <!-تكوين الفلتر الثاني-> <lipter> <filter-name> suibianxie2 </filter-name> <ilter-class> com.etoak.filter.naming </filter-class> </filter> <filter-mapping> <filter-name> suibianxie2 </filter-name> <Srevlet> <Servlet-Name> اختبار </servlet-name> <Servlet-class> com.etoak.servlet.test </servlet-class> </servlet>
ما سبق هو الفرق والاتصال بين servlets والمرشحات المقدمة لك من قبل المحرر. آمل أن يكون ذلك مفيدًا للجميع!