7、@SessionAttributes——模型数据

来源:互联网 发布:手机网络老是连接超时 编辑:程序博客网 时间:2024/06/08 12:19

上一节只是把数据模型放在了请求域中,只能在两个页面之间的请求可用,但在多个页面之间请求就得不到数据。@SessionAttributes可以保证多个请求共用一个模型数据。@SessionAttributes注解中有两个属性:一个是value,用于指定哪个对象要放在session域中;type用于指定哪种类型的对象放在session域中,两个参数可以同时配合使用。例如:
–@SessionAttributes(types=User.class) 会将隐含模型中所有类型
为 User.class 的属性添加到会话中。
– @SessionAttributes(value={“user1”, “user2”})
– @SessionAttributes(types={User.class, Dept.class})
– @SessionAttributes(value={“user1”, “user2”},
示例如下:

首先进行web.xml和spring的xml配置,配置方法同SpringMVC之注解RequestMapping用法一节中一样。

一、创建请求

创建index.jsp,用于发送请求,内容为:

<a href="springMVC/testSessionAttributes">Test SessionAttributes</a>

二、创建控制器

控制器用于截获请求,然后处理业务,并把业务数据放到请求域中,在请求域中获取业务数据。

/*value={"person"}表示person对象可以放在session会话中;types={String.class}表示String类型的对象可以放在session会话中*/@SessionAttributes(value={"person"}, types={String.class})@Controller@RequestMapping("/springMVC")public class TestSpringMVC {    @RequestMapping("/testSessionAttributes")    public String testSessionAttributes(Map<String, Object> map){        Person person = new Person("lzj", 20, "male");        map.put("person", person);        map.put("username", "lzj");        return "success";    }}

如果不加@SessionAttributes注解,只是把数据模型放在了request会话中了,加上之后,把数据模型不只放在了request中,还放在了session会话中了。

三、创建视图

下面创建success.jsp视图,并在视图中分别获取request和session中的数据。

    request person:${requestScope.person }    <br><br>    session person:${sessionScope.person }    <br><br>    request username:${requestScope.username }    <br><br>    session username:${sessionScope.username }    <br><br>

点击index.jsp中请求连接,经控制器截获并处理后,把业务数据放在了请求域中和session域中。success.jsp显示的视图上信息为:

 request person:Person [username=lzj, age=20, sex=male]  session person:Person [username=lzj, age=20, sex=male]  request username:lzj  session username:lzj 
原创粉丝点击