В предыдущей статье мы рассмотрели каркас проекта на Spring MVC в котором используется XML конфигурация. Однако это подход на сегодняшний день уже устарел и вместо него рекомендуется использовать аннотации.
Помимо аннотаций, в современных проектах также предпочтительно использование систем сборки. В данной статье в качестве примера будет задействован Maven.
Подключение библиотек
Перед началом написания кода нужно подключить требуемые библиотеки. Ниже приведён минимально необходимый набор библиотек для проекта Spring MVC в формате Maven (фрагмент файла pom.xml).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
org.springframework spring-context 5.0.3.RELEASE org.springframework spring-webmvc 5.0.3.RELEASE javax javaee-web-api 7.0 provided com.fasterxml.jackson.core jackson-databind 2.9.4 |
Стандартный проект Spring MVC использует четыре библиотеки. Но, непосредственно к Spring относятся только первые две ( spring-context и spring-webmvc). Третья библиотека, это web компоненты Java EE (сервлеты и пр.). Четвёртая — вспомогательная библиотека для работы с JSON (даже если вы не используете в проекте REST она должна присутствовать).
Конфигурация
При использовании аннотаций, помимо файла dispatcher-servlet.xml требуется ещё один конфигурационный файл applicationContext.xml. Именно в нём и задаётся использование аннотаций, но и в dispatcher-servlet.xml также требуется включить соответствующие директивы.
В прочем в файле dispatcher-servlet.xml в данном случае директива остаётся всего одна. Она задаёт расположение корневой папки с файлами представлений (p:prefix) и их расширение (p:suffix).
1 |
Таким образом, содержимое этого файла по сравнении с ранее описанным подходом сократилось до минимума.
В файле applicationContext.xml директив не намного больше. Он включает две директивы. Первая (context:component-scan) задаёт пакет, в котором Spring MVC должен искать компоненты приложения. А, вторая (mvc:annotation-driven), как можно догадаться из названия, включает поддержку аннотаций.
1 |
Содержимое конфигурационного файла web.xml принципиально ничем не отличается от проектов на основе XML конфигурации. Однако для полноты описания приведём и его.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
contextConfigLocation /WEB-INF/applicationContext.xml org.springframework.web.context.ContextLoaderListener <servlet> dispatcher org.springframework.web.servlet.DispatcherServlet 1 </servlet> dispatcher / 30 |
Контроллеры
Классы контроллеров обозначаются аннотацией @Controller, а методы действия аннотацией @RequestMapping.
Последняя обычно принимает два параметра:
- Маршрут для вызова действия (по сути часть URL адреса, которая сопоставляется с методом действия, обязательный параметр);
- Метод вызова (например GET (по умолчанию) или POST).
Ниже приведён пример, контроллера, который поддерживает несколько методов действий.
В данном примере методы действий возвращают страницы сайта, которые описаны в соответствующих JSP файлах в папке multi. Последняя расположена в корневой папке для файлов представлений, которая была задана в файле dispatcher-servlet.jsp.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Controller public class MultiController { @RequestMapping("/multi") public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("multi/index"); } @RequestMapping("/multi/test") public ModelAndView test(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("multi/test"); } } |
В соответствии с аннотациями @RequestMapping, при обращении, например, по адресу https://site.ru/multi/ будет выполнен метод index, а по адресу по адресу https://site.ru/multi/test/ метод test.
Особого внимания заслуживает то, что собой представляет сам класс контроллера.
При использовании XML конфигурации, любой контроллер, это наследник соответствующего базового класса. Но, в случае подхода основанного на аннотациях, в качестве контроллера может выступить и самый обычный POJO, что предоставляет разработчикам значительно больше свободы.
Заключение
В этой статье мы познакомились с современным способом построения проектов на базе Spring MVC.
К сожалению, в рамках одной статьи невозможно описать все нюансы такой технологии как Spring, но данная статья и не преследует таких целей. По существу, речь идеё о «быстром старте» для создания основы проекта и понимания ключевых аспектов его работы.
Также как и в прошлый раз, в заключении мы приведём примерную структуру файлов и папок проекта.
Подобная структура является практически стандартной для web проектов на основе Maven и может быть создана IDE на основе встроенного шаблона. В частности, данный проект был создан в NetBeans.
Однако не всегда IDE содержат готовый шаблон для сочетания Maven и Spring. Поэтому вполне вероятно, что конфигурационные файлы, файлы представлений, классы контроллеров и т. д. Вам придётся создавать полностью самостоятельно.
Добавить комментарий