【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 存储的 usernamepasswordage 最终会存在 会话作用域 中,而若未被 @SessionAttributes 声明的属性,仍默认存于请求作用域。

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

相关推荐
菜鸟茜2 分钟前
ES6核心知识解析01:什么是ES6以及为什么需要ES6
前端·javascript·es6
_周游2 分钟前
Java8 API文档搜索引擎_3.搜索模块(实现细节)
java·搜索引擎·intellij-idea
人道领域6 分钟前
SSM从入门到入土(Spring Bean实例化与依赖注入全解析)
java·开发语言·spring boot·后端
C澒8 分钟前
FE BLL 架构:前端复杂业务的逻辑治理方案
前端·架构·前端框架·状态模式
long31611 分钟前
Z算法(线性时间模式搜索算法)
java·数据结构·spring boot·后端·算法·排序算法
毕设源码-赖学姐12 分钟前
【开题答辩全过程】以 基于Java web的宠物领养系统的设计与实现为例,包含答辩的问题和答案
java·开发语言·宠物
前进吧-程序员12 分钟前
【硬核架构】IO 巅峰对决:Linux epoll vs Windows IOCP vs 新皇 io_uring
linux·服务器
路由侠内网穿透.12 分钟前
本地部署家庭自动化系统 Domoticz 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·自动化
江湖有缘16 分钟前
基于华为openEuler搭建ServerBee服务器监控工具
运维·服务器
瑞雪兆丰年兮18 分钟前
[从0开始学Java|第十三天]面向对象进阶(static&继承)
java·开发语言