غالبًا ما تستخدم المعترضات في الربيع MVC. عند تكوين المسارات التي تحتاج إلى اعتراض ، غالبًا ما يتم استخدام <MVC: Mapping/>. يحتوي على سمة مسار ، يتم استخدامها لتحديد المسارات التي تحتاج إلى اعتراض. على سبيل المثال:
<mvc: interceptor> <mvc: mapping path = "/**"/> <bean/> </mvc: interceptor> </mvc: interceptor>
وفقًا للتكوين أعلاه ، يعترض هذا التقاطع على جميع الطلبات.
مطابقة المسار في الربيع MVC أكثر مرونة بكثير من Web.xml القياسية. تنفذ السياسة الافتراضية org.springframework.util.antpathmatcher. كما يوحي الاسم ، يستخدم نمط المسار مسار نمط Apache Ant. هناك ثلاث طرق مطابقة للبطاقات البرية لمسارات نمط Apache ANT (مدرجة في الجدول أدناه). هذه يمكن أن تجمع بين العديد من أنماط المسار المرنة.
طاولة النمل أحرف البطاقات البرية
البرية | وصف |
| ؟ | تطابق أي حرف واحد |
| * | تطابق 0 أو أي عدد من الأحرف |
| ** | تطابق 0 أو أكثر من الدلائل |
مثال على الجدول أنماط مسار على غرار النمل
| طريق | وصف |
| /app/*. x | يطابق جميع ملفات .x ضمن مسار التطبيق |
| /APP/P؟ TENTER | تطابق /تطبيق /نمط و /تطبيق /pxttern ، ولكن ليس /التطبيق /pttern |
| /**/مثال | تطابق /تطبيق /مثال ، /تطبيق /foo /مثال ، و /مثال |
| /تطبيق/**/dir/file. | matches/app/dir/file.jsp ،/app/foo/dir/file.html ،/app/foo/bar/dir/file.pdf ، و/app/dir/file.java |
| /**/* | يطابق أي ملف .jsp |
معالجة
يعتمد تطبيق الويب بشكل أساسي على التعيين بين عنوان URL ومعالج الطلب ، وينطبق الشيء نفسه على Spring MVC ، ولكن Spring MVC تمامًا مثل كل شيء يفعله الربيع (المترجم: مرن ، يمكنه تكوين جميع أنواع الأشياء ، ولكنه يخلق أيضًا الكثير من التعقيد). لا يوجد بالتأكيد طريقة واحدة فقط لتعيين العلاقة بين عنوان URL ووحدة التحكم ، وفي الواقع ، فإنها تتيح لك إنشاء قواعد رسم الخرائط والتطبيقات بنفسك ، بدلاً من الاعتماد على تعيينات URL.
يوفر Spring معالجة تعيين URL ، ولا يقتصر ترتيب وطريقة أنماط مسار المعالجة على أي واجهة. التنفيذ الافتراضي لـ Spring MVC org.springframework.web.servlet.handler. سوف AbstractUrlhandlermapping مطابقة المسار مع أطول نمط المسار.
على سبيل المثال: بناءً على طلب/app/dir/file.jsp وهناك الآن أنماطان مطابقة للمسار /**/*.jsp و/app/dir/*.jsp ، ثم ، ما هو النمط الذي سيتطابق مع عنوان URL؟ سيتم مطابقة النمط الأخير/app/dir/*. لاحظ أن هذا المبدأ غير محدد في أي واجهة عالية المستوى ، ولكنه تفاصيل التنفيذ.
beannameurlhandlermapping
تطبيق استراتيجية التعيين الافتراضي هو فئة org.springframework.web.servlet.handler.beannameurlhandlermapping. تتطلب هذه الفئة أن يكون لأي فول يمكن التعامل مع الطلب اسم أو الاسم المستعار بدءًا من حرف Backslash (/). يمكن أن يكون هذا الاسم أو الاسم المستعار أي اسم يتوافق مع مبدأ مطابقة مسار URL.
سرد وحدة تحكم تم تعيينها باسم الفول
رمز XML
<bean name = "/home"> <property name = "FlightService" ref = "FlightService"/> </bean>
■ ملاحظة: لا يمكنك استخدام سمة المعرف لتحديد أي مسار URL ، لأن أحرف (/) محظورة في مواصفات XML لتحديد معرف XML ، ولكن يمكن أن يكون لديك كل من سمات المعرف والاسم في تعريف الفاصوليا.
إنه سهل الاستخدام للغاية ولديه بعض العيوب. لا يمكن أن يلمح إلى الفول النموذجية. بمعنى آخر ، عند استخدام beannameurlhandlermapping ، يمكن أن تكون جميع فئات المعالجة التي تطلب فقط أن تكون المفردات. بشكل عام ، يتم إنشاء وحدات التحكم وفقًا للفرد ، لذلك ليست هذه مشكلة خطيرة للغاية. أيضًا ، سأقدم وحدات التحكم في الفصول التالية ، وسيكون هناك سوى عدد قليل من أنواع وحدات التحكم التي تحتاج إلى أن تكون نماذج أولية.
■ ملاحظة: الفاصوليا النموذجية هي فول غير سينغليتون. في أي وقت يتم استدعاء طريقة getBean () لـ ApplicationContext ، سيتم إرجاع مثيل Bean جديد.
هناك مشكلة أخرى مع BeannameUrlhandLermapping وهي أن التقاطع يتم تطبيقه في التطبيق الخاص بك. نظرًا لأن الخريطة المطلوبة وخريطة Impaping Empling مرتبطة معًا ولا يتم فصلها ، فمن المستحيل إنشاء علاقات معقدة بين وحدة التحكم والاعتراض. إذا كان لديك متطلبات تعيين طلب معقدة ، فيمكنك استخدام SimpleUrlhandLermapping بدلاً من BeannameUrlhandlerMapping. SimpleUrlhandlermapping هو خيار آخر لـ BeannameUrlhandLermapping. يشير SimpleUrlhandlermapp مباشرة إلى نقاط الضعف الرئيسية في BeannameUrlhandlermapping. يمكن أن يعين معالجات طلب نوع النموذج الأولي ، ويسمح لك بإنشاء مسارات تعيين معقدة ومرنة بين المعالجات والاعتراضات. تستخدم خوارزمية التعيين نفس المكونات الأساسية مثل beannameurlhandlermapping ، لذلك لا يزال هذا النمط هو تعيين عناوين URL لطلب معالجات الطلبات) ، يمكنك ببساطة إعلانه في ApplicationContext واستخدام SimpleUrlhandlerMapping. سيتم العثور على Dispatcherservlet وفقًا للنوع ولن يقوم بإنشاء الخريطة الافتراضية (BeanNameUrlhandLermapping). هذا يعني أنه إذا كنت ترغب في استخدام كليهما ، فيجب أن تعلن كل ذلك في ApplicationContext.
■ ستعامل SPATCHERSERVLET على الطلبات في السلسلة (المترجم: طلبات العملية بالتسلسل ، يمكنك الرجوع إلى سلسلة المسؤولية في المرشحات و GOFS) ، والتي تتيح معالجة التعيينات وفقًا لمتطلباتك. يقوم معالج التعيين (تعيينات المعالج) بتنفيذ واجهة OrderDR.
ما سبق هو كل محتوى هذه المقالة حول التفسير التفصيلي لمبدأ مطابقة مسار MVC Spring ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!