会话管理是每个Web应用程序必不可少的部分。 由于Spring MVC是用于Web开发的功能强大的框架,因此它具有自己的工具和API与会话进行交互。 今天,我打算向您展示Spring MVC应用程序中会话处理的基本方法。 这意味着处理表单,将对象添加到会话中,在JSP上显示会话中的对象。 我将尽力而为,让我们开始吧。
本Spring MVC Session教程将基于我博客上与表单处理相关的先前文章之一。 我将通过向现有的学生表单添加会话逻辑来扩展应用程序,创建一个新的一页,其中包含表单和单个文本字段。 来自该字段的文本将由某个控制器处理
并添加到会话中。 为了检查会话功能,我将使用JSTL在页面上显示会话对象。 您可以在本教程的末尾下载本教程的src。
带有单个文本字段的表单
首先,我需要创建一个视图和控制器。 我将从视图创建开始,然后,我将使用会话逻辑演示相应的控制器。
...
<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>
...
现在,我需要开发控制器来处理表单。 将有两种方法来处理请求:第一种方法负责导航到页面,第二种方法与会话活动有关。
@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批注。 它表明可以在控制器的方法中为注释的参数分配一些值。 在此示例中,我只声明了一个名称为“ think ”的会话属性。 这意味着我可以使用addObject()方法将某些对象放入modelAndView中 ,并且如果对象名称与@SessionAttributes中的参数名称相同,它将被添加到会话中。 我最后要做的就是在index.jsp上添加指向新页面的链接:
...<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,…)中添加以下代码:
<p>Don't forget: ${thought}</p>
在下面的屏幕截图中,您可以看到代码工作的结果:
结果:
和
将自定义对象添加到会话中
在本节中,我将向您展示如何在会话中添加自定义对象,以及如何在JSP上显示对象的属性。 自定义对象的角色将扮演Person对象。 首先,我将修改现有的人控制器:
@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;}}
与最新版本相比,我添加了两个新字符串:
...
@SessionAttributes("personObj")
...
modelAndView.addObject("personObj", person);
...
代码执行的结果如下:
和
Spring MVC会话教程到此结束。 正如我之前所承诺的,我提供了到项目源的链接 。 我在帖子中提到的所有内容只是部分内容,您应该了解有关会话的信息,稍后我将写一篇有关不同重要功能的帖子。
翻译自: https://www.javacodegeeks.com/2013/04/spring-mvc-session-tutorial.html