【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作用域中的数据。

相关推荐
IT_陈寒5 小时前
Vue这个坑我跳了两次,原来问题出在这
前端·人工智能·后端
kyriewen5 小时前
我用 50 行代码重写了 React Router 核心,终于搞懂了前端路由原理
前端·javascript·react.js
人活一口气6 小时前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
WebInfra6 小时前
Rspack 2.1 发布:React Compiler 提速 10 倍!
前端
李明卫杭州6 小时前
CSS 媒体查询详解:一文掌握响应式设计的核心技术
前端
lichenyang4537 小时前
从 H5 按钮到 OpenHarmony 能力调用:我如何理解 ASCF 的运行链路
前端
下家7 小时前
我放弃了 Vue/React,选择自研框架
前端·前端框架
Asize8 小时前
HTML5 Canvas 基础:从按帧动画到 ECharts 数据可视化
前端·javascript·canvas
像我这样帅的人丶你还8 小时前
Java 后端详解(三):全局异常处理与 JPA 数据库映射
java·后端
默_笙8 小时前
🎄 后端给我一堆扁平数据,我 10 行代码把它变成了树
前端·javascript