يتم استخدام وحدة التحكم في SPRINGMVC للتعامل مع طلبات المستخدم. وحدات التحكم تعادل العمل في Struts1. آلية التنفيذ الخاصة بهم ومبادئ التشغيل متشابهة.
وحدة التحكم هي واجهة ، والتي ترث بشكل مباشر بشكل مباشر therctrcatcontroller وتنفذ طريقة HandleRequestinternal. طريقة HandleRequestinternal تعادل طريقة تنفيذ Struts1
استيراد org.springframework.web.servlet.modelandview ؛ استيراد org.springframework.web.servlet.mvc.abstractController HandleRequestInternal (httpservletrequestrequest ، httpservletresponse) يلقي استثناء {string action = request.getParameter ("Action") ؛ if ("list" .equals (action)) {return this.list ، repress) ؛ استثناء {list <cat> catlist = catservice.listcat () ؛ request.setAttribute ("catlist" ، catlist) ؛ إرجاع نموذج جديد ("cat/listcat") ؛}}لا يحتوي SpringMVC على تغليف بيانات مدمج ، يمكن للمطورين تغليف رمز تحويل البيانات بأنفسهم
SpringMVC فريد من نوعه في معالجة طبقة العرض. يعيد HandleRequestinternal كائن ModelandView ، والذي يمكن اعتباره تغليف كائنات JSP. يقبل ModelAndiview مباشرة المسار إلى صفحة JSP. على سبيل المثال ، المعلمة "Cat/ListCat" ليست سوى جزء من مسار JSP. المسار الكامل الفعلي هو "Web-INF/JSP/CAT/CATLIST.JSP". يتم تكوين الجزء قبل وبعد المسار في ملف التكوين.
بالإضافة إلى إعداد مسارات JSP ، يمكن لـ ModelAndView أيضًا نقل كائنات النموذج مباشرة إلى طبقة العرض دون وضعها في الطلب مقدمًا ، مثل NewModelandView ("Cat/ListCat" ، "Cat" ، CAT). إذا تم تمرير معلمات متعددة ، يمكنك استخدام الخريطة ، مثل
خريطة الخريطة = newhashMap () ؛ map.put ("Cat" ، Cat) ؛ Map.put ("Catlist" ، Catlist) ؛ إرجاع New ModelAndView ("Cat/ListCat" ، MAP) ؛بشكل عام ، يتم استخدام ملف XML مستقل مثل spring-action.xml لتكوين المكونات المتعلقة بالمواقع على وجه التحديد.
<؟ <Value>/web-inf/jsp/</value> <!-JSP prefix-> </property> <property name = "fAgEix"> "cat.mvc"-> <prop key = "cat.mvc"> catController </props> <borts> </property> </ounble> <bean id = "catcontroller"> <sperty name = "catservice" ref = "catservice"> </pertaran <Param-name> contextConfigLocation </param-name> <Param-value> /web-inf/classes/applicationcontext.xml ، /web-inf/classes/spring-action.xml </param-value> </suctext-param> <! org.springframework.web.context.contextloaderListener </beaderer-class> </stanker> <Sradlet> <!-Spring Distributor-> <Servlet-Name> Spring </querdle-name> <Iparlet-Class> org.springframework.web.servlet.dispatcherserv <Param-name> contextConfigLocation </parm-name> <Param-value> /web-inf/classes/spring-action.xml </param-value> </ith-param> <load-on-startup> 1 </over-on-on-startup> <Url>*
إذا أراد وحدة التحكم التعامل مع منطق الأعمال المتعددة ، فيمكنك استخدام MultiActionController ، وهو ما يعادل الإرسال في الدعامات 1. يمكنه توزيع طلبات مختلفة على طرق مختلفة وفقًا لمعلمة معينة.
استيراد org.springframework.web.servlet.mvc.MultiAction.MultiActionController ؛ الطبقة العامة CatController تمتد AsscribeController {private icatservice Catservice ؛ ModelAndView ("Cat/AddCat") ؛} قائمة ModelandView المحمية (httpservletrequestrequest ، httpservletresponse) يلقي استثناء {list <cat> catlist = catservice.listcat () ؛ request.setattribute ("catlist" ، catlist) ؛تكوين إلى Spring-action.xml
<bean id = "paramethodresolver"> <property name = "paramname"> <value> الإجراء </value> <!-تكوين معلمات التوزيع-> </propert key = "cat.mvc"> catcontroller </prop> <!-الوصول إلى "cat.mvc" "سيتم تسليمه إلى catcontroller للمعالجة-> <prop key =" catmulti.mvc "> catmulticontroller </props <! </bean> <bean id = "catcontroller"> <property name = "catservice" ref = "catservice"> </property> </boan> <bean id = "catmulticontroller"> <property name = "catservice" ref = "catservice"> </property>
لخص
ما سبق هو كل التفسير التفصيلي لرمز وحدة MVC في الربيع ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها.