Sprin mvc چیست ؟ – Spring MVC

در این مقاله قصد داریم شما را با spring web mvc و ساختار آن آشنا کنیم .

نکته : شما برای راه اندازی یک پروژه تحت وب توسط اسپرینگ می بایست از eclipse jee استفاده کنید. جهت دانلود می توانید به روی لینک زیر کلیک نمایید.

دانلود : Eclipse IDE for Java EE Developers

همانطور که از اسم این مقاله بر می آید ساختار سه لایه (model-view-controller) را می خواهیم توسط spring پیاده سازی کنیم .

 

DispatcherServlet چیست ؟

فریم ورک spring web mvc به نحوی طراحی شده است که تمامی تقاضا ها و پاسخ های HTTP توسط DispatcherServlet مدیریت و هندل می شود. ساختار این درخواست ها و پاسخ ها بصورت زیر می باشد .

Spring DispatcherServlet

  • بعد از دریافت یک درخواست HTTP ، آنگاه DispatcherServlet تصمیم میگیره که HandlerMapping کدام یک ازController که مناسب هست را اجرا کند.
  • سپس Controller که درخواست رو دریافت کرده سرویس متد مناسب را که GET و یا POST است ، را فراخوانی می کند. سپس سرویس متد نام view مناسب را باز می گرداند.
  • سپس DispatcherServlet  از ViewResolver کمک می گیره و view مناسب را بر می گرداند.
  • و هنگامی که view نهایی شد آنگاه DispatcherServlet پاسخ مناسب را به مرورگر بر می گرداند.

تمامی کامپوننت های ذکر شده در بالا مانند : HandlerMapping ، Controller و ViewResolver  قسمتی ازWebApplicationContext هستند که یک فرمت ساده از ApplicationContext شامل ابزارهای مخصوص وب را شامل می شود.

 

موارد مورد نیاز:

برای این که DispatcherServlet بتواند درخواست ها را نگاشت کند، این کار را توسط آدرس هایی که داخل فایل web.xml و جود دارد انجام میدهد.

در فایل web.xml زیر ما پروژه ای با نام HelloWeb را نگاشت کرده ایم :

فایل web.xml دایرکتوری WebContent/WEB-INF برنامه را در خود نگه داشته است .

برای مقدار دهی اولیه HelloWeb DispatcherServlet، فریم ورک فایلی با نام [servlet-name]-servlet.xml را لود می کند. که مکان این فایل در دایرکتوری WebContent/WEB-INF قرار دارد. برای پروژه HelloWeb نام این فایلHelloWeb-servlet.xml خواهد بود.

تگ <servlet-mapping> آدرس هایی که توسط DispatcherServlet اجرا می شود را نشان می دهد.

در این جا تمام درخواست های HTTP به jsp. ختم می شود که توسط HelloWeb DispatcherServlet اجرا می شود.

خب بیاید باهم پیگربندی های مورد نیاز برای فایل HelloWeb-servlet.xml رو چک کنیم، این فایل در آدرسWebContent/WEB-INF قرار گرفته است.

نکات مهمی که در فایل HelloWeb-servlet.xml وجود دارد به عبارت زیر هستند:

  • فایل [servlet-name]-servlet.xml  برای تعریف beans ها استفاده می شود.
  • تگ <context:component-scan…> در spring mvc برای فعال کردن قابلیت اسکن annotation مانند Controller@ و RequestMapping@ و غیره به کار می رود.
  • نقش InternalResourceViewResolver برای حل کردن مودل های نام می باشد. بطور مثال مودل نام Hello به آدرس /WEB-INF/jsp/hello.jsp نگاشت می شود.

در مرحله بعد به شما خواهیم آموخت که چطور یک کامپوننت واقعی را ایجاد کنید بطور مثال : Controllerو Model وView.

تعریف یک کنترلر(Controller)

نمایندگان DispatcherServlet درخواست های خودشون رو برای اجرای یک قابلیت خاص به کنترلر می دهند. انوتیشن (annotation ) مانند Controller به ما نشان می دهد که یک کلاس خاص درنقش کنترلر عمل می کند. و همچنین انوتیشن (annotation) مانند RequestMapping@ نیز برای نگاشت کردن یک آدرس به یک کلاس و یا یک متد خاص بکار می رود.

در Spring mvc انوتیشن Controller@ یک کلاس رو به عنوان یک هندلر تعریف می کند. در اینجا انوتیشنRequestMapping@ نشون میده که همه متدهای این کنترلر مربوط به آدرس hello/ هستند. انوتیشن بعدی یعنی(RequestMapping(method = RequestMethod.GET@ برای این منظور استفاده می شه که نشون میده این متد از چه نوعی هستند از نوع GET و یا POST. که در اینجا از نوع GET می باشد.

شما می توانید این متدی را که در بالا معرفی کردیم را به صورت زیر هم بنویسید:

value در این جا آدرس را مشخص می کند و ویزگی method نوع متد را مشخص می کنند که آیا GET و یا POST می باشد.

در این مثال از ModelMap استفاده شده است که در مثال های آتی بیشتر با آن آشنا خواهیم شد .

همچنین تکه کد

نتیجه را به صفحه ای JSP با نام hello ارسال می کند. که این صفحه JSP همانطور که در مثال های فوق گفته شد در آدرس /WEB-INF/jsp/ قرار دارد.

 

ساختن یک فایل JSP

Spring mvc برای views های خود از فرمت های مختلف از جمله  پشتیانی می کند. فایلJSP را در آدرس /WEB-INF/jsp/ قرار می دهیم.

{message}$ مقداری را چاپ می کند که توسط تکه کد زیر در متغییر message قرار داده شد.

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *