WebApplicationContext – Spring MVC

WebApplicationContext شامل تمام beanهای مربوط به وب است که مسئول ساخت روال پردازش درخواست کاربران را فراهم می کند. این beanها ممکن است شامل مجموعه ای باشند که مسئولیت رسیدگی به وب سایت های چند زبانه را دارند و یا beanهایی برای تعریف نگاشت از درخواست های ورودی به کنترلر درخواست باشند. WebApplicationContext توسط DispatcherServlet مقداردهی اولیه می شود. هنگام استفاده از مقادیر پیش فرض، این شی نمونه ای از کلاس org.springframework.web.context.support.XmlWebApplicationContext خواهد بود.

WebApplicationContext زمینه ای از ApplicationContext است، که شامل خدمات لایه میانی مانند اشیاء سرویس لایه تراکنش، منابع داده ها و اشیاء دسترسی به داده ها می باشد.

توجه داشته باشید که سرویس های لایه میانی با مولفه های مرتبط با وب متفاوت هستند. یک رابط وب فقط یک راه برای دسترسی به سرویس های لایه میانی است. به عنوان نمونه از راه های دیگر می توان به کنترل از راه دور[۱] و یا JMS اشاره کرد. در مورد کنترل از راه دور، یک زمینه اضافی، شامل تمام beanهای لازم برای دسترسی به خدمات، مثلا توسط JAX-RPC وجود دارد. XmlWebApplicationContext توسط DispatcherServlet برای مدل سازی گردش کار مورد استفاده در برنامه های کاربردی وب استفاده می شود. DispatcherServlet، WebApplicationContext را برای یافتن beanهای مورد نیاز برای اجرای گردش کار بررسی می کند. برخی از آنها را به طور پیش فرض وجود دارند و برخی دیگر از آنها باید توسط شما فراهم شوند. در قسمت های بعد در مورد این نوع از beanهای مطالبی بیان خواهد شد، اما اجازه دهید در حال حاضر یک نگاه سریع به آنها بیاندازیم:

  • یک HandlerMapping مسئول تعیین کنترلر مناسب (و یا ابزار مناسب دیگر) برای ارسال یک درخواست به آن است. معیاری که بر آن تصمیم گیری انجام می شود ، برای مثال، آدرس درخواست خواهد بود.
  • یک ViewResolver برای نگاشت نام منطقی view به view واقعی، مانند یک صفحه از نوع JavaServer Page، یک قالب Velocity، و یا یک صفحه XSL برای اعمال محتویات مدل به کار می رود.
  • یک LocaleResolver زبان مورد استفاده در هنگام رندر کردن یک view و یا انجام سایر کارهای وابسته به زبان را مشخص می کند.
  • MultipartResolver پشتیبانی لازم را برای آپلود فایل ها در HTTP را، به عنوان مثال با استفاده از FileUpload عمومی فراهم می کند.
  • ThemeResolverها پشتیبانی لازم را برای رابط های با قابلیت theme فراهم می کند. برای مثال، می توان به استفاده از cssهای مختلف و بسته های نرم افزاری اشاره کرد.
  • HandlerExceptionResolvers استثناهای غیر منتظره در کنترلرها را مدیریت و برای مثال، با ارائه یک view از پیش تعریف شده به کاربر اطلاع رسانی می کند.
  • Controllerها منطق تعاملی برنامه تحت وب و دسترسی لایه های میانی به یکدیگر را، که خدمات کسب و کار را ارائه می دهند، فراهم می کند. این مولف ها باید از هر نوع رابط مستقل باشند.
  • HandlerInterceptorها قابلیت برداشتن درخواست های HTTP را فراهم می کند. برداشتن درخواست برای اضافه کردن رفتاری در میان کار زیرساخت های وب، مانند امنیت، ورود به سیستم، و حسابرسی مفید است.

همانطور که می بینید، Spring MVC نقاطی را برای گسترش فراهم می کند که آن را در میان چارچوب های برنامه وب منحصر به فرد می کند. توجه داشته باشید که لازم نیست پیاده سازی سفارشی ای از این extensionها داشته باشید، مگر اینکه امکان خاصی را از آنها انتظار داشته باشید. پس اگر در حال حاضر کمی احساس ناآشنایی می کنید نگران نباشید –در برنامه های کاربردی ساده، به تمامی این مفاهیم نیاز ندارید اما هنگامی که برنامه شما پیچیده تر شود از انعطاف پذیری آنها خرسند خواهید بود.

WebApplicationContext تمام قابلیت های ApplicationContext را به ارث می برد. علاوه بر آن، دارای یک ارجاع به ServletContext است. در شرایط عادی، شما نیازی به دسترسی به WebApplicationContext یا ServletContext درون کنترلر خود و یا دیگر beanها ندارید. اما در صورت لزوم، شما می توانید با extend کردن از org.springframework.web.context.support.WebApplicationObjectSupport، که به نوبه خود ApplicationObjectSupport را extend می کند به این اشیا دسترسی پیدا کنید.

WebApplicationObjectSupport توابع زیر را فراهم می کند:

 

متد اول زمینه نرم افزاری[۲] که در آن beanهای مربوط به وب قرار دارند را بر می گرداند. در شرایط عادی شما نیازی به دسترسی به زمینه نرم افزار ندارید، زیرا بهتر است اتصال beanها به همدیگر در فایل توصیف گر WebApplicationContext انجام شود.

متد ()getServletContext دسترسی به ServletContext را فراهم می کند که از طریق آن شما می توانید به برنامه وب دسترسی پیدا کنید – احتمالا منابع زیادی توسط دیگر servletها در آنجا قرار گرفته اند.

اگر شما به محلی برای ذخیره فایل های موقت نیاز دارید، Servlet container امکانات استانداردی فراهم کرده است و ()getTempDir یک دایرکتوری را به شما برمی گرداند که می توانید اطلاعات خود را در آنجا ذخیره کنید. این امکان، برای ابزارهایی استفاده می شود که برای مثال، کاربران را قادر می سازد فایلی را آپلود کنند. فایل برای اولین بار در یک دایرکتوری موقت قرار می گیرد و بعد از آن در انتظار پردازش توسط یک کنترلر خواهد بود.

 

[۱] Remoting

[۲] Application Context

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

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