@SessionAttributes原理
默认情况下Spring MVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。
@SessionAttributes参数
1、names:这是一个字符串数组。里面应写需要存储到session中数据的名称。
2、types:根据指定参数的类型,将模型中对应类型的参数存储到session中
3、value:其实和names是一样的。
具体代码
Java代码
1 @RequestMapping("/test") 2 public String test(Map<String,Object> map){ 3 map.put("names", Arrays.asList("caoyc","zhh","cjx")); 4 map.put("age", 18); 5 return "hello"; 6 }
Jsp页面
1 1、request中names:${requestScope.names}<br/> 2 2、request中age:${requestScope.age}<br/> 3 <hr/> 4 3、session中names:${sessionScope.names }<br/> 5 4、session中age:${sessionScope.age }<br/>
显示结果:
【总结】:上面代码没有指定@SessionAttributes,所有在session域总无法获取到对应的数据。
下面我们加上@SessionAttributes注解
1 @SessionAttributes(value={"names"},types={Integer.class}) 2 @Controller 3 public class Test { 4 5 @RequestMapping("/test") 6 public String test(Map<String,Object> map){ 7 map.put("names", Arrays.asList("caoyc","zhh","cjx")); 8 map.put("age", 18); 9 return "hello"; 10 } 11 }
再次访问页面:
可以看到session域中值已存在
【注意】:@SessionAttributes注解只能在类上使用,不能在方法上使用
分类:
springmvc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2015-07-02 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。
2015-07-02 C# 关闭显示器(显示)