В этой заметке я предлагаю попробовать "на вкус" популярный веб-фреймворк swing-mvc.
Исходный код проекта можно скачать
по этой ссылке
Напишем простейший калькулятор, позволяющий складывать два числа. Выглядеть он будет так:
Spring-mvc работает так:
- ищется метод-контроллер, который может обработать данный запрос
- в метод передаются параметры из запроса
- метод выполняется, возвращая модель (ModelMap)
- в соответствии с ViewResolver'ом ищется jsp, которая будет отображать ответ
- найденная jsp рендерится с учетом параметров из ModelMap
Будем использовать
maven и структура проекта будет следующая:
C:\WORK\SIMPLE-SPRING-PROJECT
├───src
│ └───main
│ ├───java
│ │ └───com
│ │ └───blogspot
│ │ └───fuud
│ │ └───java
│ │ └───simple
│ │ └───spring
│ │ └─────SampleController.java
│ └───webapp
│ └───WEB-INF
│ ├───pages
│ │ └────calc.jsp
│ ├────dispatcher-servlet.xml
│ └────web.xml
└───pom.xml
pom.xml выглядит так:
Я добавил в плагины jetty, что бы можно было запускать наше приложение прямо из консоли командой:
Следующий на очереди web.xml:
В web.xml я определяю, где находится главный spring-context, определяю DispatcherServlet как сервлет по умолчанию для всего приложения. Обратите внимание, что паттерн для сервлета задан как /, а не как /* - потому как все содержимое папки WEB-INF должно обрабатываться обычным образом.
На очереди calc.jsp:
И контроллер:
Аннотацией @Controller я говорю spring'у, что методы этого класса будут обрабатывать входящие запросы (какие именно, указанно в аннотации @RequestMapping). Параметры помечены как необязательные в виду того, что при первом входе на страничку пользователь еще ничего не ввел - и эту ситуацию надо корректно обрабатывать.
И, наконец, мы добрались до ядра нашего приложения dispatcher-servlet.xml:
Сначала я настраиваю спринг использовать аннотации:
Потом говорю в каком пакете он должен искать аннотированные файлы:
Потом определяю, как из реквеста получать файлы для отображения (в данном случае в начало имени добавится "/WEB-INF/pages/", а в конце добавится ".jsp"):
Вот и все: запускаем проект, выполнив в корне mvn jetty:run и заходим броузером на страничку
http://localhost:8080/simple-swing-project/calc
И радуемся спрингу!