بالإضافة إلى الدعامات ، فإن القوة الرئيسية لأطر MVC الرئيسية على شبكة الإنترنت هي الثانية إلى الربيع MVC. لذلك ، هذا هو أيضًا الإطار السائد الذي يحتاج المبرمج إلى إتقانه. مع المزيد من الأطر ، هناك حلول أكثر طبيعية للتنفيذ عند التعامل مع الاحتياجات المتغيرة والشركات. ومع ذلك ، إذا كنت ترغب في استخدام Spring MVC بمرونة للتعامل مع معظم تطوير الويب ، فيجب عليك إتقان تكوينه ومبادئه.
1. ربيع MVC Environment Construction: (Spring 2.5.6 + Hibernate 3.2.0)
1. إدخال حزمة جرة
Spring 2.5.6: Spring.jar ، Spring-Webmvc.jar ، commons-logging.jar ، cglib-nodep-2.1_3.jar
Hibernate 3.6.8: hibernate3.jar ، hibernate-jpa-2.0-api-1.0.1.final.jar ، antlr-2.6.jar ، commons-collections-3.1 ، dom4j-1.6.1.jar ، SLF4J-NOP-1.6.4.JAR ، حزمة جرة برنامج التشغيل لقواعد البيانات المقابلة
SpringMVC هو إطار عمل MVC يعتمد على مرسلي. أول شيء يصل كل طلب هو مرسلي. يعد Dispatcherservlet مسؤولاً عن إعادة توجيه كل طلب طلب إلى المعالج المقابل. بعد معالجته ، يعيد العرض المقابل (العرض) والنموذج (النموذج). لا يمكن تحديد العرض والنموذج الذي تم إرجاعه ، أي أنه يمكنك فقط إرجاع النموذج أو إرجاع العرض أو لا.
يرث Dispatcherservlet من httpservlet. نظرًا لأن SPRINGMVC يعتمد على Dispatcherservlet ، فلنشرب أولاً تكوين Dispatcherservlet حتى يتمكن من إدارة المحتوى الذي نريد إدارته. يتم الإعلان عن httpservlet في ملف web.xml.
<!-تكوين الربيع MVC-> <!-=================================================- <Srevlet-Class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <!-يمكنك تخصيص موقع ملف التكوين servlet.xml. الافتراضي موجود في دليل الويب على الويب ، والاسم هو [<servlet-name>]-servlet.xml ، مثل الربيع servlet.xml <Ing-param> <param-name> contextConfiglocation </param-name> <param-value> /web-inf/spring-servlet.xml </param- <load-on-startup> 1 </load-on-startup> </stervlet> <Servlet-Mapping> <Sradlet-Name> Spring </servlet-name> <url-pittern>*. -> <Anderer> <NistenerClass> org.springframework.web.context.contextloaderListener </leaderer-class> </stanker> <!-يحدد الدليل الذي يوجد فيه ملف تكوين حبوب الربيع. التكوين الافتراضي موجود في دليل الويب-> <context-param> <Param-name> contextConfigLocation </param-name> <param-value> classpath: config/applicationContext.xml </param-value> </sucked-param>
الربيع servlet.xml التكوين
اسم SPRING-SERVELL هو أن القيمة التي تتوافق مع علامة <Servlet-Name> في Web.xml أعلاه هي Spring (<Sradlet-Name> Spring </servlet-name>) ، واسم ملف Spring-Servlet. إذا تم تغييره إلى springMVC ، فإن اسم الملف المقابل هو springmvc-servlet.xml.
<؟ Xmlns: p = "http://www.springframework.org/schema/p" http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context <a href = "http://www.springframework.org/schema/context/spring-context-3.0.xsd"> http://www.springframework.org/schema/context/spring-contxt-3.0.0 <السياق: التعليق التوضيحي-config /> <!-قم بتعيين حزمة الجرة حيث يوجد الفصل باستخدام التعليق التوضيحي-> <سياق: مكون مفتحة مكونة package = "Controller"> < /context: component-scan> <!-أكمل تعيين Pojos-> <! بادئة: بادئة ، لاحقة: لاحقة -> <bean p: prefix = "/jsp/" p: fuckix = ". jsp"/> </beans>
ستستخدم Dispatcherservlet بعض الفاصوليا الخاصة للتعامل مع طلبات الطلب وإنشاء إرجاع العرض المقابل.
فيما يتعلق بإعادة العرض ، تكون وحدة التحكم مسؤولة فقط عن تمرير قيمة ، ثم يتم إرجاع العرض. يتم التحكم فيه بواسطة محلل العرض. محلل العرض الشائع في JSP هو InternalResourceViewResovler ، والذي سيتطلب بادئة ومناسبة.
في محلل العرض أعلاه ، إذا قامت وحدة التحكم بإرجاع المدونة/الفهرس ، فستكون العرض المحسّن من خلال محلل العرض هو /jsp/blog/index.jsp.
يتحدث بشكل رئيسي عن وحدة التحكم.
الفئة التي تستخدم Controller للعلامة هي وحدة التحكم
Package Controller ؛ import javax.servlet.http.httpservletrequest ؛ استيراد org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.annotation.requestmapping . الواردة في خريطة عنوان url request (ما لم تكن السمة مطلوبة = false) // REQUESTPARAM يمكن اختصارها على النحو التالي: @requestparam ("اسم المستخدم") إذا (! "المسؤول". // القفز على مسار الصفحة (الافتراضي هو إعادة التوجيه) ، والذي لا يحتاج إلى احتواء البادئة واللاحقة التي تم تكوينها في ملف تكوين الخدمات الربيع} إرجاع "loginsuccess" ؛ } @requestmapping ("/test/login2.do") نموذج publicandview testlogin2 (اسم مستخدم السلسلة ، كلمة مرور السلسلة ، int age) {// request والاستجابة لا يجب أن تظهر في الطريقة. إذا لم تتمكن من استخدامه ، فيمكنك إزالته // اسم المعلمة يطابق اسم عنصر تحكم الصفحة ، وسيتم تحويل نوع المعلمة تلقائيًا إذا (! "admin" .equals (اسم المستخدم) ||! // يدويًا من طراز ModelandView لإكمال الصفحة (إلى الأمام) ، فإن التأثير يعادل الطريقة أعلاه لإعادة السلسلة} إرجاع ModelAndView جديد (RedirectView جديد ("../ index.jsp")) ؛ // إعادة توجيه صفحة عن طريق إعادة توجيه // هناك أيضًا طريقة بسيطة لكتابة إعادة التوجيه // إرجاع نموذج جديد ("إعادة التوجيه: ../ index.jsp") ؛ } @requestmapping ("/test/login3.do") modelandview testlogin3 (مستخدم المستخدم) {// يتم دعم المعلمات أيضًا ككائنات نموذج ، على غرار إجراءات الإجراءات. لا يتطلب المستخدم أي تكوين ، ما عليك سوى كتابة اسم المستخدم = user.getUserName () ؛ سلسلة كلمة المرور = user.getPassword () ؛ int age = user.getage () ؛ if (! } إرجاع New ModelAndView ("LoginSuccessess") ؛ } Resource (name = "loginservice") // احصل على معرف الفول في ApplicationContext.xml الذي هو loginservice ، وحقن loginservice الخاص ؛ // أي ما يعادل طريقة حقن الربيع التقليدية للكتابة وضبط الأساليب. هذه الفائدة موجزة وأنيقة ، مما يلغي الكود غير الضروري @requestmapping ("/test/login4.do") السلسلة العامة testlogin4 (مستخدم المستخدم) {if (loginservice.login (user) == false) {return "loginerror" ؛ } إرجاع "loginsuccess" ؛ }}أمثلة الطريقة الأربعة أعلاه هي وحدة تحكم تحتوي على عناوين URL المختلفة للطلب. يمكنك أيضًا استخدام وصول URL لتمييز طرق الوصول المختلفة من خلال معلمات عنوان URL. الرمز كما يلي:
وحدة تحكم الحزمة ؛ استيراد org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.requestmethod ؛ requestmapp ControlPublic Class TestController2 {REquestMapping public String TestLogin (اسم مستخدم السلسلة ، كلمة مرور السلسلة ، int ens) {// إذا لم تتم إضافة معلمات ، يتم تنفيذ الطريقة افتراضيًا عند طلب /test2/login.do if (! } إرجاع "loginsuccess" ؛ } @requestmapping (params = "method = 1" ، method = requestMethod.post) السلسلة العامة testlogin2 (اسم المستخدم السلسلة ، كلمة مرور السلسلة) {// يتم تمييز طرق الاتصال المختلفة بناءً على قيمة طريقة المعلمة params // "loginerror" ؛ } إرجاع "loginsuccess" ؛ } @requestmapping (params = "method = 2") سلسلة public testlogin3 (اسم مستخدم السلسلة ، كلمة مرور السلسلة ، int int) {if (! "admin" .equals (اسم المستخدم) ||! } إرجاع "loginsuccess" ؛ }}في الواقع ، يمكن اعتبار طلب url url طلب طلب طلب الوالدين على الفصل ، في حين يمكن اعتبار طلب url url طلب طلب الطفل على الطريقة. سيتم في النهاية تقسيم عنوان URL لطلب الوالدين والطفل معًا لمطابقة عنوان URL لطلب الصفحة. لذلك ، يمكن أيضًا كتابة طلب الطلب مثل هذا:
وحدة تحكم الحزمة ؛ استيراد org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.annotation.requestMapping ؛@controller@requestMapping ("/test3/*") /test3/login.do public string testlogin (string username ، كلمة مرور السلسلة ، int age) {if (! "admin" .equals (username) ||! } إرجاع "loginsuccess" ؛ }}تشمل التعليقات التوضيحية الشائعة في springmvc pathvariable ، @requestparam ، @pathvariable الموسومة على معلمات الطريقة. يمكن تمرير المعلمات المحددة باستخدامه باستخدام مسار الطلب. انظر المثال التالي
requestmapping (value = "/comment/{blogid}" ، method = requestMethod.post) التعليق الفراغ العام (تعليق التعليق ،@pathvariable int blogid ، جلسة httpsession ، httpservletresponse) رمي ioException {}في هذا المثال ، تم وضع علامة على BlogID كمتغير مسار الطلب بواسطة pathVariable. إذا كان الطلب هو/plblog/comment/1.do ، فهذا يعني أن قيمة المدونة هي 1. وبالمثل ، يتم استخدام requestparam أيضًا لتمرير القيم إلى المعلمات ، ولكنها تأخذ القيمة من معلمة الطلب من البداية ، والتي تعادل طلب request.getParameter ("المعلمة").
في طريقة وحدة التحكم ، إذا كانت هناك حاجة إلى عناصر الويب httpservletrequest و httpservletresponse و httpsession ، فأنت بحاجة فقط إلى إعطاء الطريقة معلمة مقابلة ، فإن springMVC سوف يمرر القيمة إليها تلقائيًا أثناء الوصول. ومع ذلك ، تجدر الإشارة إلى أنه إذا تم استدعاء الجلسة عندما تكون المرة الأولى التي تصل فيها إلى النظام ، فسيتم الإبلاغ عن خطأ ، لأنه لم يتم إنشاء الجلسة في هذا الوقت.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.