Spring 3 и @Controller
В тази статия ще разгледаме създаването на контролери с помощта на Spring Framework версия 3 и по-специално Spring MVC.
Съкращението MVC в името Spring MVC означава Model-view-controller. MVC (Model-View-Behavior, Model-View-Controller) е шаблон за проектиране, използващ няколко шаблона за проектиране, чрез които моделът на данни на приложението, потребителският интерфейс и взаимодействието с потребителя са разделени на три отделни компонента, така че модификацията на един от компонентите има минимално въздействие върху останалите. Тази схема на проектиране често се използва за изграждане на архитектурна рамка, когато се преминава от теория към изпълнение в определена предметна област.
Парадигмата за програмиране на MVC няма да бъде описана подробно в тази статия.
И така, контролерът в Spring MVC играе ролята (странно :)) на контролера в програмната парадигма Model-View-Controller. Всяка заявка се прихваща от глобалния Front контролер, който определя чрез конкретни параметри (URI, метод и/или заглавки на заявка) към кой контролер да предаде получената заявка. Контролерът обработва заявката и създава модела. Предният контролер запълва изгледа с данни за модела и връща резултата в браузъра. По-долу е потокът от обработка на заявки през пролетта.

Най-простият контролер изглежда така:
Анотацията @Controller се използва, за да каже на Spring, че този клас е bean и трябва да се зареди, когато приложението стартира. Анотацията @RequestMapping(value = "/simple1") ни казва, че този контролер ще обработи заявка, чийто URI е "/simple1"
- кажете на предния контролер, че името на изгледа е "просто" (по подразбиране това е файлът /WEB-INF/views/simple.jsp).
Същите операции могат да се извършват с помощта на класа ModelAndView, който агрегира всички параметри на модела и показваното име:
jsp файл както в първия, така и във втория случай може да изглежда, например, както следва:
В двата примера по-горе контролерите не предават никакви данни към изгледа, което е много рядко. Затова обмислете опцията за предаване на данни от контролера към изгледа с помощта на модела.
Модел-изглед-контролер
Данните могат да се предават от контролера към изгледа по два начина:
В първия случай моделът се предава на метода като параметър. Методът трябва да върне името на изгледа. Във втория случай самият метод създава обект ModelAndView, който съдържа както модела, така и името на изгледа. Контролерът трябва да върне този обект.
jsp файлът ще изглежда така:
В този пример контролерът предава 2 параметъра на изгледа - име и път. Те се показват в изгледа с помощта на конструкцията $. Например:
В този случай на потребителя се дава следният низ
Тоест изразът $ се заменя с John, тъй като и в първия, и във втория метод на контролера името на променливата на модела се попълва с низа John.
За да може методът requestMapped да получи управление, е необходимо да се изпълни заявка от формата "/rmc/test".
Метод на заявка
Подобно на повечето http рамки, Spring има способността да разпределя заявки към различни методи, не само чрез параметрите, посочени в URI, но и чрез различни методи на заявка. Например:
За да се изпълни вторият метод requestMethodPost, е необходимо да се подаде POST заявка към него, а за това е необходимоизползвайте например следната форма:
Автоматично довършване на променлива от заявка или @PathVariable
Spring също има способността да довършва автоматично променлива от пътя на заявката. Да разгледаме един пример:
Използвайки този код, не е нужно да се притеснявате как да получите низа между pathvariable/ и следващата наклонена черта. Той ще бъде автоматично поставен в променливата на категорията, благодарение на анотацията @PathVariable.
Можете да използвате целочислен тип или друг стандартен тип вместо типа низ на променливата категория - Spring автоматично ще преобразува низа в желания тип. Например:
Струва си да се отбележи, че в анотацията @PathVariable можете да посочите името на променливата:
така че не го прави. В следния случай ще се използва името, което съответства на името на променливата: