@SessionAttributes

若希望站在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个@SessionAttributes,springmvc 将在模型中对应的属性暂存到HttpSession中

@SessionAttributes除了通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中

@SessionAttributes(types=User.class)会将隐含模型中所有类型为User.class的属性添加到会话中。

@SessionAttributes(value={"user1","user2"})

@SessionAttributes(types={User.class,Dept.class})

@SessionAttributes(value={"user1","user2"},types={Dept.class})

1.在success.jsp中设置一个超链接,指向新建的result.jsp文件,传递city,看是否能传递过去

result.jsp

<body>
city:${requsetScope.city }
</body>

结果失败了,参数不能由success.jsp中传到result.jsp中,因为city放在了MapModel中,所以它只有在请求域中才是有效的。

@SessionAtttributes(value={});

1.要求放置的值必须在模型数据里面(request范围中有限)

2.标注属性:

通过属性key完成session的共享数据处置

1.value:String()

value:{"a","b"}

2.可以通过模型数据当中的类型,共享数据的设置

@RequestMapping("/springmvc")
@SessionAttributes(value={"city"})
public class helloworldhandler {
${requestScope.city}
${sessionScope.city}
<a href="result">result</a>
city:${sessionScope.city }

@SessionAttributes(types={String.class})

@SessonAttribute将搜索所以String类型属性 

city:${sessionScope.city }
name:${sessionScope.name }

最后有一个值得注意的地方,如果在模型数据中没有属性的值,如在success.jsp中没有name,则在result.jsp中也不会接收到name.

猜你喜欢

转载自my.oschina.net/u/3829307/blog/1800362