مشخصات مقاله
-
1635
-
0.0
-
4757
-
0
-
0
درس بیست و دو : آموزش فریم ورک MVC در Spring
این مقاله قدیمی است، برای مطالعه مقاله جدید بارگذاری شده در این زمینه بر روی عبارت زیر کلیک کنید :
آموزش MVC Introduction-Java Spring
فریم ورک MVC چیست ؟
فریم ورک Spring MVC ، معماری model-view-Controller و کامپوزیت های آماده آن را برای ایجاد نرم افزارهای تحت وب انعطاف پذیر و دارای بخش های مجزا فراهم میکند .
الگوی MVC باعث جدا شدن و مستقل عمل کردن اجزای اصلی یک application ( UI logic و business و input logic ) از یکدیگر شده ، در حالی که ارتباط بین آنها به وسیله روش های مختلفی فراهم می شود .
- - بخش Model اطلاعات برنامه را کپسوله سازی کرده و از تعدادی POJO تشکیل می شود .
- - بخش View وظیفه رندکردن مدل داده ای برنامه و تولید خروجی HTML آن را جهت نمایش در مرورگر
- - بخش Controller هم وظیفه پردازش درخواست های کاربر را داشته و بایستی model مناسب برنامه را تولید کرده و جهت رندر به View ارسال کند .
آموزش DispatcherSerlet :
فریم ورک Spring MVC ( model-view-controller ) حول یک کامپوزیت به نام DispatcheServlet طراحی شده که کلیه درخواست ها و پاسخ های HTTP را مدیریت می کند . فرآیند پردازش درخواست ها در Spring MVC توسط DispatcherServtel در دیاگرام زیر نمایش داده شده است :

در لیست زیر ، ترتیب وقوع رویدادهای مرتبت با پردازش یک درخواست HTTP توسط DispatcherServlet بیان شده است :
- - پس از دریافت یک درخواست HTTP ، کامپوزیت DispatcherServlet از کامپوزیت HandlerMapping برای فراخوانی Controller مناسب ، کمک می گیرد .
- - Controller درخواست را دریافت کرده و سرویس مناسب را بسته به متدهای GET یا POST جهت اجرای درخواست فراخوانی می کند . سرویس فراخوانی شده model data را بر مبنای business logvc مناسب ، تنظیم می کند و پس نام View را به DispatcherServlet پلاش می دهد .
- - پس از اینکه view به طور کامل آماده شد ، DispatcherServlet مدل دیتا ( data model ) را به view بازمی گرداند تا برای اجرا به مرورگر ارسال شود .
- - تمامی کامپوزیت های اشاره شده در قسمت بالا برای مثال Handler Mapping ، Controller و ViewResolver بخشی از WebApplicationContext هستند که خود یک کامپوزیت توسعه یافته از ApplicationContext می باشد .این کامپوزیت دارای یکسری قابلیت های لازم و اضافه برای نرم افزارهای تحت web است .
تنظیمات لازم ( Required Configuration ) :
شما بایستی آدرس و مشخصات درخواست هایی که می خواهید Dispatcher Servlet مدیریت را به وسیله قابلیت Mapping URL در فایل web.xml مشخص می کنید .
کد زیر نحوه تعریف مشخصات و آدرس دهی برای DispatcherServlet را در یک مثال عملی نشان می دهد :
Spring MVC Application HelloWeb org.springframework.web.servlet.DispatcherServlet 1 HelloWeb *.jsp
فایل web.xml در پوشه WebContent/WEB-INF پروژه وب نگهداری می شود . برای مقدار دهی HelloWeb Dispatcher Servlet در کد فوق ، فریم ورک تلاش می کند تا محتوی برنامه را از فایلی به نام [ servlet-name ]-servlet.xml که در پوشه WebContent/WEB-INF قرار دارد ، بخواند . در این مثال نام مورد نظر ما در پوشه HelloWeb-servlet.xml است .
نکات مهم درباره فایل HelloWeb-servlet.xml را در ادامه بررسی کرده ایم : در مراحل بعدی این درس ، به آموزش نحوه نوشتن کامپوزیت های واقعی مورد نظرتان مثل Controller خواهیم پرداخت . همانطور که گفتیم Dispatch Servlet هر request را به controller مرتبط خود واگذار می کند تا کدهای آن اجرا شود . @Controller annotation تعیین کننده کلاس ای است که قواعد مربوط به یک controller را اعلام می کند . در کد فوق ، @Controller annotation ، کلاس را به عنوان یک Spring MVC Controller تعیین می کند . همچنین اولین استفاده از @Request Mapping کلیه متدهای مدیریت برنامه در این کنترل متعلق به مسیر /hello هستند . annotation بعدی کد یعنی @RequestMapping( method = RequestMethodGET ) تعیین کننده متد Print Hello () به عنوان متد سرزیس دهنده پیش فرض کنترلی برای درخواست های HTTP GET می باشد . شما می توانید متد دیگری را نیز برای مدیریت درخواست Post برنامه در همین URL تعیین کنید . خاصیت value تعیین کننده URL ای است که مدیریت کننده متد ( handler method ) به آن متصل است . همچنین خاصیت method تعیین کننده متد سرویس جهت مدیریت درخواست های HTTP GET می باشد . نکات مهم زیر را نیز بایستی در مورد کد کنترلی فوق یادآوری کنیم : Spring MVC از View های مختلف جهت تولید خروجی هایی با تکنولوژی های متفاوت پشتیبانی می کند . این تکنولوژی ها شامل JSP ، HTML ، PDF ، EXCEL ، XML ، JSON ، Atom، Rss و ...هستند . اما به صورت معمول ما از تمپلیت JSP که به وسیله JSTL نوشته شده است ، استفاده می کنیم . به وسیله کد زیر ، یک View ساده به نام hello را در مسیر /WEB-INF/hello/hello.jsp ایجاد می کنیم : در کد فوق ${ message } خاصیتی است که آن را درون Controller تنظیم کرده ایم . شما می توانید هرچند خواص که نباز دارید را تعیین نموده تا در View نمایش داده شود .
در مرحله بعد ، تگ
اگر نمی خواهید برنامه شما به صورت پیش فرض به دنبال فایل با نام [servlet-name]-servlet.xml در پوشه WebContent/WEB-INF بروید ، بایستی نام و محل قرارگیری این فایل ها را با اضافه کردن یک ContentLoaderListener به فایل web.xml به صورت زیر تعیین کنید :
در کد زیر هم می توانیم تنظیمات لازم ( required configuration ) برای فایل HelloWeb-servlet.xml را که در پوشه WebContent/WEB-INF برنامه قرار دارد را مشاهده کنیم :
تعیین یک Controller :
همچنین @RequestMapping جهت اتصال URL به یک کلاس یا یک متد خاص به کار می رود . مثل کد زیر :
@Controller
@RequestMapping("/hello")
public class HelloController{
@RequestMapping(method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
همچنین شما می توانید کد کنترلی فوق را به صورت دیگری نیز بنویسید . در این روش جدید ، می توانید خواص جدیدی را به @RequestMapping اضافه کنید :
@Controller
public class HelloController{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
ایجاد JSP Views :< html >
< head >
${message}
< /body >
< /html >