springmvc之处理模型数据SessionAttributes注解

2020-08-26 10:28:46 浏览数 (1)

ModelAndView和Map都是将数据模型放到请求域request中。

(1)若希望在多个请求之间共用某个数据模型属性数据,可以在控制器类上加一个@SessionAttributes。springmvc会将在模型中对应的属性存到HttpSession中。

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

SpringmvcTest.java

代码语言:javascript复制
@SessionAttributes(value={"user"},types= {String.class})
@RequestMapping("/springmvc")
@Controller
public class SpringmvcTest {
    private static final String SUCCESS = "success";
    
    @RequestMapping(value="/testSessionAttributes")
    public String testSessionAttributes(Map<String,Object> map) {
        User user = new User();
        user.setUsername("tom");
        user.setAge(12);
        map.put("user", user);
        map.put("school", "一中");
        System.out.println("testSessionAttributes");
        return SUCCESS;
    }
}

index.jsp

代码语言:javascript复制
    <a href="springmvc/testSessionAttributes">testSessionAttributes</a>

success.jsp

代码语言:javascript复制
    <p>Success</p>
    <p>request user:${requestScope.user}</p>
    <p>session user:${sessionScope.user}</p>
    <p>request school:${requestScope.school}</p>
    <p>session school:${sessionScope.school}</p>

在启动服务器之后:

点击:

说明: SessionAttributes注解只能修饰类,value属性用于将指定名字的属性放入到session中。types属性将指定的数据类型放到session中。在jsp中,利用requestScope(请求域)可以取得传过来的模型数据,利用sessionScope(会话域)来获取session中的数据。如果不利用SessionAttributes,那么数据模型就只会存放在request中,在session中不会有相应的数据。

0 人点赞