Управление сессиями является одной из важных частей для каждого веб-приложения. Поскольку Spring MVC является мощной средой для веб-разработки, он имеет собственные инструменты и API для взаимодействия с сессиями. Сегодня я собираюсь показать вам основные способы обработки сессий в приложении Spring MVC. Это означает обработку форм, добавление объектов в сеанс, отображение объектов из сеанса в JSP. Я буду стараться изо всех сил, так что давайте начнем.
Этот учебник Spring MVC Session будет основан на одной из предыдущих публикаций в моем блоге, связанных с обработкой форм . Я собираюсь расширить приложение, добавив логику сеанса к существующей форме студента, создать новую страницу с формой и одним текстовым полем. Текст из поля будет обработан каким-то контроллером
и добавил к сессии. Для проверки функциональности сеанса я буду отображать объекты сеанса на страницах, используя JSTL. Src из учебника вы можете скачать в конце учебника.
Форма с одним текстовым полем
Во-первых, мне нужно создать вид и контроллер. Я начну с создания представления и после этого продемонстрирую соответствующий контроллер с логикой сеанса.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
...<h2>Adding of a String into the session</h2><form action="remember.html" method="post"><table><tbody><tr><td>To remember:</td><td><input name="thoughtParam" type="text"></td></tr><tr><td><input type="submit"></td><td></td></tr></tbody></table></form><a href="${pageContext.request.contextPath}/">Main page</a> ... |
Теперь мне нужно разработать контроллер для обработки формы. Для обработки запросов будет два метода: первый из них отвечает за переход на страницу, второй — за активность сеанса.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
@Controller@SessionAttributes("thought")public class SingleFieldController { @RequestMapping(value="/single-field") public ModelAndView singleFieldPage() { return new ModelAndView("single-field-page"); } @RequestMapping(value="/remember") public ModelAndView rememberThought(@RequestParam String thoughtParam) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("thought", thoughtParam); modelAndView.setViewName("single-field-page"); return modelAndView; } } |
Это простой Spring MVC-контроллер с одной дополнительной аннотацией @SessionAttributes. Это указывает на то, что в методах контроллера могут быть присвоены некоторые значения аргументам аннотации. В этом примере я объявил только один атрибут сеанса с именем « мысль ». Это означает, что я могу поместить некоторый объект в modelAndView с помощью метода addObject (), и он будет добавлен в сеанс, если имя объекта будет таким же, как имя аргумента в @SessionAttributes. Последнее, что мне нужно сделать, это добавить ссылку на новую страницу в index.jsp:
|
1
2
3
4
5
6
7
8
9
|
... <h1>Home page</h1> <p>This is Home page.</p> <p>Don't forget: ${thought}</p> <p> <a href="person-form.html">Person page</a> <br> <a href="single-field.html">Single field page</a> </p>... |
Чтобы убедиться, что сеанс работает правильно, вам необходимо добавить следующий код в существующие представления (single-field-page.jsp,…):
|
1
|
<p>Don't forget: ${thought}</p> |
На скриншотах ниже вы можете увидеть результат работы кода:
И результаты:
И
Добавление пользовательского объекта в сессию
В этом разделе я покажу вам, как добавить пользовательский объект в сеанс и как отобразить свойства объекта в JSP. Роль пользовательского объекта будет играть объект Person . Сначала я изменю существующий контроллер лица:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
@Controller@SessionAttributes("personObj")public class PersonController { @RequestMapping(value="/person-form") public ModelAndView personPage() { return new ModelAndView("person-page", "person-entity", new Person()); } @RequestMapping(value="/process-person") public ModelAndView processPerson(@ModelAttribute Person person) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("person-result-page"); modelAndView.addObject("pers", person); modelAndView.addObject("personObj", person); return modelAndView; } } |
По сравнению с последней версией я добавил две новые строки:
|
1
2
3
4
5
|
...@SessionAttributes("personObj")...modelAndView.addObject("personObj", person);... |
Результат выполнения кода следующий:
И
Это конец учебника по сеансу Spring MVC. И, как я и обещал ранее, я даю ссылку на источники проекта. Все, что я упомянул в этом посте, является лишь частью того, что вы должны знать о сессиях, позже я напишу пост о различных важных функциях.




