@SessionAttributes与@SessionAttribute会话数据控制

共 3138字,需浏览 7分钟

 ·

2021-07-29 23:31

点击上方 Java学习之道,选择 设为星标

每天18:30点,干货准时奉上!

来源: imooc.com/article/details/id/262098
作者: 艾贺521

session存储也是后端比较重要的一个知识点,面试的时候常常会拿来与cookie对比,还有一些分布式Session,单点登录等问题啊,不过使用Spring的时候,它已经给我们的Session做了很多方便的操作,其中就有@SessionAttribues和@SessionAttribute注解。

Part1简介

@SessionAttributes用于在会话中存储Model的属性,一般作用在类的级别。像下面的代码,model的属性user会被存储到session中,因为@ModelAttribute与@SessionAttributes有相同的注解。

@Controller
@SessionAttributes("user")
public class ModelController {

    @ModelAttribute("user")
    public User initUser(){
        User user = new User();
        user.setName("default");
        return user;
    }

}

@SessionAttribute是用于获取已经存储的session数据,并且作用在方法的层面上。

@RequestMapping("/session")
    public String session(
            @SessionAttribute("user")
 User user
    )
{
        // do something
        return "index";
    }

Part2实例

这个时候,我们已经有能运行的项目了。接下来准备代码

  1. 准备java文件。先准备@SessionAttributes的文件,用于存储session
@Controller
@RequestMapping("/model")
@SessionAttributes("user")
public class ModelController {

    @ModelAttribute("user")
    public User initUser(){
        User user = new User();
        user.setName("default");
        return user;
    }

    @RequestMapping("/parameter")
    public String parameter(
            @ModelAttribute("user")
 User user
    ) 
{

        return "index";
    }

}
  1. 准备@SessionAttribute的文件,用于检索session,以验证注解是否正确。
@Controller
public class SessionController {
    @RequestMapping("/session")
    public String session(
            @SessionAttribute("user")
 User user,
            HttpServletRequest request
    )
{
        return "index";
    }
}

Part33. 进行测试。

不经过@SessionAttributes会直接报错

先经过@SessionAttributes

首先访问/model/parameter的url

然后访问/session的url。这个地址,我们没有传递任何参数,可以看到从session中获取user对象成功了

-- END --

 | 更多精彩文章 -



加我微信,交个朋友
长按/扫码添加↑↑↑


浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报