requestparam ، يجب أن تكون قد رأيت ذلك ؛ pathvariable ، يجب أن تكون تعرفه ؛ QUeryparam ، لماذا لا تعرف ذلك؟ ! وهو مألوف لك (@cookievalue)! هي (modelandview)! IT (modelattribute)! هذا صحيح ، مجرد شرح هذا ، يفتح Spring MVC عالمًا ملونًا لك. هيا ، لا تكن متحمسًا (MI) و (Hu) ، اجلس ، دعنا نتحادث بشكل جيد حول هذه التعليقات التوضيحية إخوانيين ~~~ (انتظر ، ألم تسمع بها؟ حسنًا ، هيا ، تجلس في الصف الأمامي ، ستكون هناك!)
1. كيفية مطابقة مسار الطلب في الربيع MVC - "أي مسار الطلب أفضل ، فإن الطلب معروف"
يتم استخدام requestmapping لتعيين الطلبات ، مثل الحصول على الطلبات أو الطلبات النشر أو أنماط الراحة والأنماط غير المقصودة. يمكن استخدام هذا التعليق التوضيحي في فئة أو على طريقة ، إذا تم استخدامها في فصل ما ، يمثل المسار الأصل لجميع الطرق في الفصل.
على سبيل المثال (فئات الاختبار المستخدمة هنا مثل springmvctest وتم تقديم بعض الصفحات في المقالة الأولى "التعلم springmvc - بدءًا من HelloWorld"):
إضافة طرق اختبار إلى springmvctest.java:
requestMapping ("/testRequestMapping") السلسلة العامة testRequestMapping () {system.out.println ("testRequestMapping") ؛ عودة النجاح ؛}لاحظ أن التعليق التوضيحي @requestmapping ("/testRequestMapping") يضاف إلى مستوى الطريقة ، مما يعني أنه يمكن تحديد هذه الطريقة من خلال المسار النسبي لـ "/testRequestMapping". في الوقت نفسه ، وضعنا أيضًا شرحًا توضيحيًا على مستوى الفصل على فئة springmvctest:
requestmapping ("/springmvc")@controlpublic class springmvctest {لاحظ أن هناك أيضًا شرحًا لشرح Controller. هذا التعليق التوضيحي مسؤول عن معالجة الطلبات الموزعة بواسطة SPATHERSERSEVLET في springMVC. يلف البيانات المطلوبة من قبل المستخدم من خلال طبقة معالجة الخدمة ثم يقوم بإرجاع النموذج إلى العرض المقابل للعرض. في هذه المرحلة ، لدينا مسار مثل "springmvc/testRequestMapping" ، وبعد ذلك يمكننا تحديد موقع طريقة testRequestMapping ثم تنفيذ هيئة الطريقة داخل الطريقة.
لإضافة شيء آخر ، يمكن لـ REQUESSMAPPING تنفيذ مسارات مطابقة غامضة ، مثل:
؟ : تطابق شخصية
*: تطابق أي حرف
**: تطابق مسارات الطبقة متعددة الطبقات
/springmvc/**/lastTest يمكن أن يتطابق مع مسارات مثل/springmvc/firsttest/secondtest/lastTest
2. كيفية الحصول على المعلمات المطلوبة لـ Spring MVC - "ثمانية خالدة تعبر البحر ، كل منها يظهر قوتهم السحرية"
1. pathvariable
يتم استخدام هذا التعليقات التوضيحية لرسم خريطة للأصحاب النائضين في عنوان URL للطلب. من خلال pathVariable ، يمكنك ربط معلمة العنصر النائب في عنوان URL بمعلمة طريقة معالجة وحدة التحكم. ألا تفهم؟ انظر مثال:
requestMapping ("/testPathVariable/{id}") السلسلة العامة testPathVariable (pathVariable (value = "id") integer id) {system.out.println ("testPathVariable:" + id) ؛ عودة النجاح ؛}في index.jsp نضيف اتصالًا لتشغيل طلب:
<a href = "springmvc/testpathvariable/1"> testPathVariable </a> <br/> <br/>
يمكننا أن نرى أن هناك ارتباط تشعبي هنا. بعد النقر ، سنقوم بإدخال طريقة معالجة وحدة التحكم المقابلة لـ springMVC/TestPathvariable/1. نريد الآن الحصول على "1" في معلمة الطلب هذه ، لذلك أضف "/testpathvariable/id" إلى طريقة TestPathVariable ، حول المعرف "، والمراسلات المحددة لـ {id}. في معلمات هذه الطريقة ، يمكن أن نحصل على المعلمة" 1 "1" 1 "الطلب من خلال الطلب.
2. requestparam
يتم استخدام هذا التعليق التوضيحي أيضًا للحصول على معلمات الطلب. فكيف يختلف هذا التعليق التوضيحي عن pathvariable؟ دعونا نلقي نظرة على المثال:
إضافة طرق في springmvctest
@requestmapping (value = "/testRequestParam") السلسلة العامة testRequestParam (requestparam (value = "username") سلسلة المستخدم ، @requestparam (value = "age" ، مطلوب = false ، defaultValue = "0") عودة النجاح ؛}
أضف علامة الارتباط التشعبي في index.jsp
<a href = "springmvc/testRequestParam؟ اسم المستخدم = Jackie & Age = 12"> testRequestParam </a> <br/> <br/>
سوف يتطابق النقر فوق الارتباط التشعبي على الصفحة مع مسار الطلب على طريقة TestRequestParam في وحدة التحكم. لاحظ أنه في هذه الطريقة ، نعلن عن متغيرين من خلال التعليق التوضيحي requestparam للحصول على قيمة المعلمة التي يتم تقديمها عن طريق الاستعلام في الطلب ، واحد هو القيمة بعد اسم المستخدم والآخر هو القيمة بعد العمر.
بعد رؤية هذا ، ربما تفهم بعض الاختلافات بين pathvariable و requestparam. للحصول على طلبات مثل "springmvc/testpathvariable/1" ، نستخدم pathVariable لربط المعلمات المطلوبة ؛ بينما بالنسبة لمعلمات الطلب مثل "springmvc/testrequestparam؟ اسم المستخدم = Jackie & Age = 12" تظهر كأزواج ذات قيمة رئيسية. نحن نستخدم requestparam للحصول على قيمة الطلب المحددة بعد اسم المستخدم أو العمر.
يشبه QueryParam أيضًا طلب PreskParam ، لأنه ليس شرحًا في إطار SPRING MVC ، لذلك لن يتم وصفه بالتفصيل هنا.
بالنسبة لأنواع الطلبات المختلفة وطرق الطلب ، لدى Spring MVC مجموعة من الحلول المستهدفة. دعنا نلقي نظرة على ماهية طلبات نمط الراحة الشائعة الآن - باستخدام نمط الراحة لتحقيق الإضافة والحذف والتعديل والبحث.
يتم تنفيذ التنفيذ من أسفل إلى أعلى للواجهة للتحقق (GET) ، إضافة (POST) ، حذف (حذف) وتعديل (PUT) في فئة SPRINGMVCTEST من الأسفل إلى الأعلى
requestmapping (value = "/testrest/{id}" ، method = requestMethod.put) سلسلة testrestputput (@pathvariable (value = "id") integer id) {system.out.println ("test put:" + id) ؛ إرجاع نجاح ؛} @requestmapping (value = "/testrest/{id}" ، method = requestMethod.delete) السلسلة العامة testrestDelete (pathvariable (value = "id") integer id) {system.out.println ( إرجاع نجاح ؛} @requestmapping (value = "/testrest" ، method = requestMethod.post) public string testrest () {system.out.println ("test post") ؛ إرجاع نجاح ؛} @requestmapping (value = "/testrest/{id}" ، method = requestMethod.get) testrest string public (pathvariable (value = "id") integer id) {system.out.println ("test get:" + id) ؛ عودة النجاح ؛}إذن كيفية تنفيذ واجهة مكتب الاستقبال؟ الترتيب المقابل
<form Action = "springmvc/testrest/1" method = "post"> <input type = "hidden" name = "_ method" value = "pum"/> <input type = "submit" value = "testrestput"/> </form> <br/> <form action = "springmvc/testRest/1" method = post " type = "submit" value = "testrest delete"/> </part> <br> <br> <brant
بالإضافة إلى ذلك ، نحتاج أيضًا إلى إضافة عبارة في ملف Configuration Web.xml الذي يدعم تحويل Post إلى حذف الطلبات ووضعها.
<!-تكوين hiddenhttpmethodfilter: يمكنك تحويل طلبات النشر إلى حذف أو نشر الطلبات-> <filter> <filter-name> hiddenhttpmethodfilter </filter-name> <-filter-class> org.springframework.web.filter.hiddenhttttpmmer <filter-name> HiddenHttpMethodFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
كما ترون ، يتم إرسال التعديل والحذف هنا من خلال Post ، لأن PUT و DELETE غير مدعومان هنا لتنفيذ الحذف والتعديل مباشرة. بدلاً من ذلك ، من خلال استخدام طريقة POST وإحضار علامة إدخال Typen Type Type Type لإخبار الخلفية بأن ما أرسلته في مكتب الاستقبال هو في الواقع طلب للحذف والتعديل.
فكيف يتم تنفيذ هذه العملية ، لماذا إضافة
<type type = "hidden" name = "_ method" value = "delete"/>
سيتم شراء هذا الرمز المميز من قبل الآخرين في الخلفية. ثم دعونا نرى كيف اشتريناها لاحقًا.
في التحليل النهائي ، يرجع ذلك إلى إضافة فئة HiddenHttpMethodFilter في web.xml. هناك طريقة dofilterinternal في هذه الفئة. من خلال تصحيح الأخطاء ، يمكننا العثور على أدلة ، وبدء Tomcat (وليس Tomcat8) ، وانقر فوق علامة الإدخال المقابلة لعملية الحذف ، وأدخل واجهة تصحيح الأخطاء. يمكننا أن نرى:
حفرة صغيرة: هنا ، يرجى ملاحظة أن بدء التشغيل لا يمكن أن يكون tomcat8 ، ولكن يمكن أن يكون إصدارًا أصغر فقط من 8 ، مثل 7 أو 6 ، وما إلى ذلك. يوضح الشكل التالي رسالة الخطأ باستخدام tomcat والاستجابة الناجحة باستخدام 7:
لتلخيص ، كيفية إرسال طلب للحصول على وضع وحذف:
1. تكوين HiddenHttpMethodFilter في web.xml
2. أرسل طلب البريد
3. يوجد مجال مخفي في الطلب ، الاسم "_mothod" ، يتم وضع القيمة أو حذفها
أخيرًا ، دعنا نتحدث عن التعليق التوضيحي @cookievalue.
3. @cookievalue
هذا التعليقات التوضيحية هو أيضًا روتين مماثل ، وهو أيضًا رسم خرائط ، وهو يخطط لقيمة ملف تعريف الارتباط.
عندما نرسل طلبًا ، يمكننا أن نرى أن الطلب يحمل بعض قيم ملفات تعريف الارتباط.
على سبيل المثال ، jsessionid أو المسار هنا. الآن سنكتب طريقة للحصول على قيمة ملفات تعريف الارتباط.
إضافة في springmvctest
requestmapping (value = "/testCoOkievalue") السلسلة العامة testCoOkievalue (@cookievalue ("jsessionId") string cookievalue) {system.out.println ("testCoOkievalue:" + cookievalue) ؛ عودة النجاح ؛}أضف رابطًا إلى واجهة index.jsp
<a href = "springmvc/testCoOkievalue"> testCoOkievalue </a> <br/> <br/>
وبهذه الطريقة ، يمكننا الحصول على نتائج مثل "testCoOkievalue: 1410F05C9ADD84E8659C2AC79E8CC666".
حتى الآن ، قدمنا
1. استخدام requestmapping
2. احصل على استخدام pathvariable و @requestparam من معلمات الطلب
3. تقديم كيفية تنفيذ طلبات الراحة ، وتحليل كيفية تحويل المنشور إلى حذف ووضع الطلبات
4. مقدمة لاستخدام @cookievalue
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.