SpringMVC(二十六):@SessionAttributes与@CookieValue注解使用

star2017 1年前 ⋅ 334 阅读

@SessionAttributes注解可以指定将Model中的某些属性转存一份到HttpSession对象中。
@CookieValue注解用于将请求的Cookies数据映射到功能处理方法的参数上。

@SessionAttributes

@SessionAttributes注解将Model的属性从默认的request域拷贝一份到session域上,可以多个属性。
该注解只能声明在类上,不能声明在方法上。

  1. 属性:names, String[]类型, Model中属性的名称,即存储在HttpSession当中的属性名称。
  2. 属性:value, String[]类型, names属性的别名。
  3. 属性:types, Class<?>[], 说明Model中属性的类型(class 对象)。
    @SessionAttributes(types= {SysUser.class, String.class}, value= {"sysUser","userName"})

Controller代码:

@Controller
@SessionAttributes(value = "userName")
@RequestMapping("/user")
public class SessionController {

    @RequestMapping("/session")
    public String getSessionAttributes(Model model) {
        SysUser sysUser = new SysUser()
                .setAccount("admin")
                .setPassword("11223344");
        model.addAttribute("sysUser", sysUser);
        model.addAttribute("userName", "root");
        return "session";
    }
}

JSP代码:

<body>    
    <h3>requestScope获取用户:</h3>
    <p>账号:${requestScope.sysUser.account}</p>
    <p>密码:${requestScope.sysUser.password}</p>
    <p>账号:${requestScope.userName}</p>
    <hr>
    <h3>sessionScope获取用户:</h3>
    <p>账号:${sessionScope.userName}</p>
    <p>账号:${sessionScope.sysUser.account}</p>
    <p>密码:${sessionScope.sysUser.password}</p>
</body>

@CookieValue

@CookieValue可以很方便地获取到请求的JSESSIONID
支持的属性有:

  1. 属性:name, String 类型, 指定请求头绑定的名称。
  2. 属性:value, String 类型, name 属性的别名。
  3. 属性:required, boolean 类型, 参数是否必须绑定。
  4. 属性:defaultValue, String 类型, 如果没有传递参数,则使用默认值。
//将session绑定到参考 sessionId 上
@Controller
@RequestMapping("/sys")
public class SysUserController {

    @RequestMapping("/getSession")
    public void getSession(
            @CookieValue(value="JSESSIONID", defaultValue="") String sessionId) {
        System.out.println(sessionId);
    }
}
更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: