1 مقدمة
ما هو إطار عمل MVC
الاسم الكامل لـ MVC هو وحدة التحكم في عرض النموذج ، وهو اختصار لسيطرة عرض النموذج. إنه نموذج لتصميم البرامج. يقوم بتنظيم التعليمات البرمجية باستخدام طريقة فصل لمنطق الأعمال ، وبيانات ، وواجهة عرض ، وجمع منطق الأعمال إلى مكون. مع تحسين الواجهة وتفاعل المستخدم وتخصيصها ، ليست هناك حاجة لإعادة كتابة منطق العمل. تم تطوير MVC بشكل فريد لتعيين وظائف الإدخال والمعالجة والإخراج التقليدية في بنية واجهة المستخدم الرسومية المنطقية.
يعد التحكم في عرض النموذج (MVC) نمط تصميم معروف يعتمد على تطبيقات واجهة التصميم. إنه يتفكيك منطق العمل بشكل أساسي عن الواجهة من خلال فصل دور النماذج والآراء ووحدات التحكم في التطبيقات. عادةً ما يكون النموذج مسؤولاً عن تغليف بيانات التطبيق في طبقة العرض. يعرض العرض فقط هذه البيانات ولا يحتوي على أي منطق عمل. وحدة التحكم هي المسؤولة عن استلام الطلبات من المستخدمين واستدعاء خدمات الخلفية (المدير أو DAO) للتعامل مع منطق العمل. بعد المعالجة ، قد تقوم طبقة أعمال الخلفية بإرجاع بعض البيانات ليتم عرضها في طبقة العرض. تقوم وحدة التحكم بجمع هذه البيانات وإعداد النموذج المراد عرضه في طبقة العرض. تتمثل الفكرة الأساسية لنموذج MVC في فصل منطق العمل عن الواجهة ، مما يسمح لهم بالتغيير بشكل فردي دون التأثير على بعضهم البعض.
في تطبيقات SpringMVC ، يتكون النموذج عادة من كائنات POJO ، والتي تتم معالجتها في طبقة العمل واستمرت في طبقة الثبات. عادة ما تكون طرق العرض هي قوالب JSP مكتوبة في مكتبة العلامات القياسية JSP (JSTL). تتم إدارة جزء وحدة التحكم من قبل Dispatcherservlet ، وسنتعلم المزيد عنها في هذا البرنامج التعليمي.
يعتقد بعض المطورين أن فصول طبقة الأعمال وطبقة DAO هي جزء من مكونات نموذج MVC. لدي آراء مختلفة حول هذا. لا أعتقد أن طبقة العمل وفئات طبقة DAO هي جزء من إطار عمل MVC. عادةً ما يكون تطبيق الويب عبارة عن بنية من ثلاث طبقات ، وهي تمثيل خدمة البيانات. MVC هو في الواقع جزء من طبقة العرض.
مرسل Servlet (وحدة تحكم الربيع)
في أبسط تطبيقات MVC Spring ، تكون وحدة التحكم هي servlet الوحيدة التي تحتاجها إلى تكوينها في ملف وصف نشر الويب Java (أي ملف web.xml). SPRING MVC Controller - المعروف عادة باسم Servatcher Servlet ، ينفذ نمط تصميم وحدة التحكم في الواجهة الأمامية. ويجب أن يمر كل طلب ويب به حتى يتمكن من إدارة دورة حياة الطلب بالكامل.
عند إرسال طلب الويب إلى تطبيق Spring MVC ، يتلقى Servatcher Servlet أولاً الطلب. ثم يقوم بتنظيم المكونات التي تم تكوينها في سياق تطبيق Spring Web (مثل وحدة تحكم معالجة الطلب الفعلية ومحلول العرض) أو باستخدام تكوين التعليقات التوضيحية ، وكلها تتطلب معالجة الطلب.
حدد فئة وحدة تحكم في Spring 3.0 ، والتي يجب تمييزها بتوضيح Controller. عندما تتلقى وحدة تحكم مع شرح شرح Controller طلبًا ، فستبحث عن طريقة معالج مناسبة للتعامل مع الطلب. هذا يتطلب من وحدة التحكم تعيين كل طلب إلى طريقة المعالج من خلال واحد أو أكثر من تعيينات المعالج. من أجل القيام بذلك ، يجب تزيين أساليب فئة وحدة التحكم بشروح @REQUESTMAPPE لجعلها أساليب المعالج.
بعد أن قامت طريقة المعالج بمعالجة الطلب ، فإنه ينفصل عن التحكم في طريقة عرض مع نفس اسم العرض مثل قيمة إرجاع طريقة المعالج. لتوفير طريقة مرنة ، لا تمثل قيمة إرجاع طريقة المعالج تنفيذ عرض ولكن طريقة عرض منطقية ، أي أنه لا يوجد تمديد ملف. يمكنك تعيين طرق العرض المنطقية هذه للتنفيذ الصحيح وكتابة هذه التطبيقات إلى ملف السياق بحيث يمكنك بسهولة تغيير رمز طبقة العرض دون حتى تعديل الرمز الذي يطلب فئة المعالج.
تقع على عاتق محدد العرض مسؤولية مطابقة الملف الصحيح للاسم المنطقي. بمجرد تحليل فئة وحدة التحكم اسم عرض إلى تطبيق عرض. إنه يجعل الكائن المقابل وفقًا للتصميم الذي تم تنفيذه بواسطة العرض.
2 حزمة جرة استيراد
على الأقل يجب أن يكون هناك هذه.
3 ملفات التكوين
3.1 web.xml
<؟ XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xd <splay-name> springmvc_helloworld </display-name> <-lip-file-lister> <lisp-file> index.html </ishiffile-file> <lisplive-file> index.htm </elverfile> <lish-file> index.jsp </iship-file> <IRMO-file> default.jsp </iship-file> </rip-file-list> <!-servlet for Spring MVC-> <!-بعد التهيئة ، سيبحث Dispatcherservlet مباشرة عن ملف springmvc-servlet.xml تحت/web-inf/. يجب أن يتوافق تعريف المعلمة لعلامة Servlet-Name مع ملف XML-> <Sradlet> <Sradlet-Name> springmvc </servlet-name> <Sradlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <Srevlet-Name> springmvc </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <Param-name> contextConfigLocation </arm-name> <Param-value> classpath: applicationContext <Caneerer-Class> org.springframework.web.context.contextLoaderListener </stanker-class> </stanker> </web-app>
3.2 SpringMVC-servlet.xml
يتم تحديد اسم هذا الملف بواسطة <servlet-name> </servlet-name> من Dispatcherservlet التي تم تكوينها في web.xml. يكون المسار في السياق/الويب-إنف/ويب/، والذي يقوم بشكل أساسي بتكوين العلاقة المقابلة بين اسم العرض المنطقي والعرض الفعلي الذي تم إرجاعه بواسطة وحدة التحكم.
<؟ xmlns: aop = "http://www.springframework.org/schema/aop" XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/sxma/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/Context id = "viewResolver"> <property name = "viewClass" value = "org.springframework.web.servlet.view.jstlview" /> <!-وحدة التحكم تُرجع اسم عرض منطقي بعد المعالجة المسبقة ". </bean> </bans>
4 اكتب فئة المجال
تستخدم لتغليف بعض بيانات التقديم
package com.lin.helloworld.domain ؛ public class helloWorld {private string data ؛ public helloWorld () {super () ؛} public helloWorld (بيانات سلسلة) {super () ؛ this.data = data ؛} string public getData () {return data ؛ "HelloWorld [data =" + data + "]" ؛}} 5 وحدة تحكم الكتابة
هذا هو وحدة التحكم في MVC. ما يختلف عن Struts2 هو أنه اعتراض على مستوى الطريقة ، و STRUTS2 هو اعتراض على مستوى الفصل.
package com.lin.helloworld.controller ؛ استيراد org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.annotation.modelattribute org.springframework.web.servlet.modelandview ؛ import com.lin.helloworld.domain.helloworld ؛ controllerpublic class helloWorldldcontroller {// here/here/here/hello هو معادلة الإجراء في struts2 // إعادة سلسلة إلى requestmapp مُنشئ ModelandView يعادل نتيجة STRUTS2 Namemodandelandview ModelAndView = New ModelAndView ("HelloWorld" ، "MSG" ، "HelloWorld !!!") الكائن // الفرق بين هنا و struts2: // struts2 مقابض النموذج التقديم: <input name = "obj.data" requestmapping ("/helloObj") publicandview sealhhelloworld (modelattribute ("obj") helloworld obj) {system.out.println (obj.toString ()) ؛ modelandview modelandview = new modelandview (6 وجهات نظر
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪ string path = request.getContextPath () ؛ String basePath = request.getScheme ()+": //" request.getServerName ()+"+request.getserport () "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> <base href = "<٪ = basepath ٪>" rel = "external nofollow"> <title> my jsp 'helloworld.jsp' بدء تشغيل page </title> http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = type = "text/css" href = "styles.css" rel = "severonal nofollow"> -> </head> <body> helloWorld! هذا هو مثال إطار عمل MVC Spring. <br> $ {msg} <hr/> <form action = "helloObj" method = "post"> <!- تقديم النموذج هنا يختلف عن Struts2. سوف يتوافق name = "data" تلقائيًا مع المرفق للكائن -> <إدخال type = "text" name = "data" size = "30"/> <br/> <input type = "submit" value = "prident7 هيكل الدليل
لخص
ما سبق هو كل شيء عن مثال إدخال springmvc في هذه المقالة ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى هذا الموقع:
تنفيذ برمجة Java لـ SpringMVC مثال تسجيل الدخول البسيط
تستخدم برمجة SpringMVC واجهة وحدة التحكم لتنفيذ رمز مثيل وحدة التحكم
شرح مفصل حول ما إذا كان اعتراض SPRINGMVC ينتهي صلاحية جلسة المراقبة
إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع.