【SpringMVC】常用注解:@SessionAttributes

1.作用

用于多次执行控制器方法间的参数共享

2.属性

value:用于指定存入的属性名称

type:用于指定存入的数据类型

3.示例

先写JSP代码

复制代码
<a href="demo1/putMethod">存入 SessionAttribute</a>
 <br>
 <a href="demo1/getMethod">取出 SessionAttribute</a>
 <br>
 <a href="demo1/cleanMethod">清除 SessionAttribute</a>

编写控制器代码

复制代码
@Controller
 @RequestMapping("demo1")
 @SessionAttributes(value ={"username","password","age"})
 public class HelloController {
 @RequestMapping("putMethod")
 public String putMethod(Model model){
 model.addAttribute("username", "泰斯特");
 model.addAttribute("password","123456");
 model.addAttribute("age","admin");
 return "success";
 }
 @RequestMapping("getMethod")
 public String getMethod(ModelMap model){
 System.out.println(model.get("username")+";"+model.get("password
 ")+";"+model.get("age"));
 return "success";
 }
 @RequestMapping("cleanMethod")
 public String cleanMethod(SessionStatus sessionStatus){
 sessionStatus.setComplete();
 return "success";
 }
}

通过Model对象的addAttribute方法来向作用域里存储数据。

这里听到作用域可能会有点蒙,下面来讲一下

Model 对象的 addAttribute 方法存储数据的作用域需结合 @SessionAttributes 注解分析:

默认请求作用域 :正常情况下,Model 存储的数据会放入 请求作用域,仅在当前请求处理周期内有效。

会话作用域(因 @SessionAttributes) :也叫session作用域,由于类上声明了 @SessionAttributes(value = {"username", "password", "age"}),这三个属性会额外存入 会话作用域。会话作用域的数据会跨请求保留,直到会话结束(如浏览器关闭或主动清除会话)。

因此,代码中通过 Model 存储的 username、password、age 最终会存在 会话作用域 中,而若未被 @SessionAttributes 声明的属性,仍默认存于请求作用域。

然后可以用get方法从session作用域中取数据,也可以用SessionStatus类的方法去删除session作用域中的数据。

相关推荐
葡萄城技术团队5 小时前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
中云DDoS CC防护蔡蔡5 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
2301_780789665 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
欧米欧6 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
学长毕设6 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
excel6 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
步行cgn7 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
前端精髓7 小时前
调用大模型API
运维·服务器·microsoft