1. في تطبيق الربيع ، لدينا استخدامان للتصفية ، أحدهما هو اعتراض ، والآخر هو بالطبع مرشح. سنقدم استخدام المرشحات في سبرينغ بوت هنا. استخدام المرشحات في springmvc هو نفسه في الأساس ، ولكن هناك اختلاف بسيط في التكوين.
2. تتيح وظيفة المرشح للمستخدمين تغيير الطلب وتعديل استجابة. المرشح ليس servlet ، لا يمكن أن يولد استجابة. يمكنه معالجة الطلب مسبقًا قبل أن يصل الطلب إلى servlet ، أو يمكنه التعامل مع الاستجابة عند ترك servlet. بمعنى آخر ، المرشح هو في الواقع "سلاسل servlet" (سلسلة servlet).
يتضمن مرشح:
1) اعتراض قبل servlet يسمى ؛
2) تحقق من طلب servlet قبل أن يسمى servlet ؛
3) تعديل رأس الطلب وبيانات الطلب حسب الحاجة ؛
4) تعديل رأس الاستجابة وبيانات الاستجابة حسب الحاجة ؛
5) اعتراض بعد أن تسمى servlet.
1. سيناريوهات التطبيق للمرشح
من خلال فهم مرشحات المرشحات ، يمكننا أن نعرف أنه يمكن إجراء بعض المعالجة في المواقف الثلاثة التالية:
1> قرر ما إذا كان يجب الوصول إلى المورد المستهدف عن طريق التحكم في المكالمة إلى طريقة السلسلة.
على سبيل المثال ، يمكنك التحقق من أذونات المستخدم ، وما إلى ذلك. حدد ما إذا كان المستخدم لديه إذن للوصول إلى موارد معينة ، ولديه إذن بالإصدار ، ولا يقوم بتنفيذ طريقة السلسلة.
2> يتم تحقيق بعض الأغراض عن طريق القيام ببعض المعالجة قبل استدعاء طريقة السلسلة.
على سبيل المثال ، قم بحل مشكلة الكود المشوهة الصيني ، وما إلى ذلك قبل طريقة Dofilter ، يمكن تنفيذ ترميز ترميز طلب الإعداد. يمكنك حتى تغليف وتزيين واجهة الطلب للتعامل مع المشكلة الصينية المتمثلة في الحصول على طريقة الحصول على طلب (أعد كتابة الطلب المقابل. GetParameter).
3> يتم تحقيق بعض الأغراض من خلال القيام ببعض المعالجة بعد استدعاء طريقة السلسلة.
على سبيل المثال ، اضغط على موقع الويب بأكمله. قبل استدعاء طريقة chain.dofilter ، قم بتغليف وتزيين كائن الاستجابة باستخدام الفئة A ، وتجاوز طريقة getOutputStream و GetWriter. داخل الفئة A ، يتم تخزين محتوى الإخراج في دفق ByteArrayoutputStream ، ثم بعد تنفيذ السلسلة.
2. مبدأ اعتراض المرشح
هناك طريقة dofilter في واجهة المرشح. عندما يكتب المطور فئة المرشح لتنفيذ طريقة DoFilter وتكوين مورد الويب الذي يجب اعتراضه ، سيقوم خادم الويب بالاتصال بأسلوب Dofilter للمرشح أولاً قبل استدعاء طريقة الخدمة لمورد الويب (المحدد بواسطة آلية الوصول الداخلي للخادم).
3. تصفية القواعد
// تصفية جميع الموارد في التطبيق. تتضمن جميع الملفات الموجودة أسفل جذر التطبيق الحالي جميع الملفات تحت الدليل الفرعي متعدد المستويات. لاحظ أنه يسبقه "/" registration.addurlpatterns ("/ *") ؛ // تصفية موارد ملف النوع المحددة ، جميع ملفات HTML تحت جذر التطبيق الحالي. ملاحظة: لا يوجد "/" قبل *.html ، وإلا فإن الخطأ تسجيل. // تصفية جميع الملفات ضمن الدليل المحدد. جميع الملفات الموجودة أسفل دليل المجلد الفرعي (يمكن أن يكون دليلًا فرعيًا متعدد المستويات) تحت جذر التطبيق الحالي. // تصفية التسجيل المحدد للملف.ثالثا. طلب
@component @servletcomponentscan @webfilter (urlpatterns = "/login/*" ، filtername = "logInfilter") public class loginfilter تنفيذ filter { @ @void void (servErequest ، servlequest ، servetrequest ، servetrequest ، ServletResponse ، filterchain filterchain) يلقي IoException ، servlexception {} Override public void Dorting () {}}4. التفسير:
1. الغرض من هذا التعليق التوضيحي هو تسليم تسجيل الدخول إلى الحاوية للمعالجة. هذا لجعل LogInfilter
2. servletcomponentscan يتم استخدام هذا لمسح @webfilter لجعل webfilter يعمل. بالطبع ، من الممكن أيضًا شرح أنبوب سلك Servlet. هذا servletcomponentscan هو الأفضل لإلغاء تثبيت التطبيق ، والتكوين العام. لدي مرشح واحد فقط هنا ، لذلك لم أكتبه على التطبيق.
3. WebFilter هو من الاستخدام الواضح. ما الرابط المستخدم للتصفية ولماذا هو اسم المرشح؟
5. مقدمة موجزة لاستخدام المرشح في springMVC
1. طريقة الكتابة لا تزال هي نفسها. يرث مرشحًا لتنفيذ 3 طرق لمعالجته.
2. رميها في الحاوية: يجب تكوين هذا في web.xml
<ilipter> <iliter-name> logInfilter </filter-name> <ilter-class> com.troy.boot.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> logInfilter </filter-name>
3. يمكنك دراسة الاستخدام المحدد بنفسك.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.