会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes

简介: 会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes

@SessionAttributes

@SessionAttributes 是一个 SpringMVC 中的注解,它用于将特定的模型属性暂时存储在 HTTP 会话(session)中。当使用 SessionAttributes 注解时,被注解的模型属性可以在多个请求之间保持状态并共享数据。

使用 SessionAttributes 注解的步骤如下:

  1. 在控制器类上添加 @SessionAttributes 注解,指定需要存储在会话中的模型属性名。例如,@SessionAttributes(“user”) 表示将名为 “user” 的模型属性存储在会话中。
  2. 在处理方法(即带有 @RequestMapping 注解的方法)上,如果需要将模型属性添加到会话中,则可以使用 @ModelAttribute 注解。例如,@ModelAttribute(“user”) User user 表示将名为 “user” 的模型属性添加到会话中,并将其绑定到名为 “user” 的参数上。
  3. 访问该控制器的其他处理方法时,可以直接通过方法参数获取存储在会话中的模型属性。Spring 会自动从会话中获取该属性并将其注入到方法参数中。
  4. 当需要结束会话时,可以使用 @SessionAttributes 注解的 value 属性来指定需要清除的模型属性名。例如,@SessionAttributes(value = “user”, clearAfterCompletion = true) 表示在请求完成后清除名为 “user” 的模型属性。

SessionAttributes 的作用是在多个请求之间共享模型属性。这在某些情况下很有用,例如在多个页面间共享用户登录信息、购物车内容等。需要注意的是,存储在会话中的模型属性在整个会话期间都会存在,直到会话结束或被手动清除。

需要注意的是,SessionAttributes 注解只在 SpringMVC 的会话范围内起作用,并不会影响到 Servlet API 中的会话管理。因此,使用 SessionAttributes 时需要确保适当地处理会话的创建和销毁,以防止潜在的内存泄漏或其他问题。

package world.xuewei.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
/**
 * 第一个控制器
 *
 * @author 薛伟
 * @since 2023/10/30 16:18
 */
@Controller
@SessionAttributes(value = {"name", "age", "address"})
public class SessionController {
    @RequestMapping("/session")
    public String session(Model model) {
        model.addAttribute("name", "张三");
        model.addAttribute("age", 25);
        model.addAttribute("sex", "Man");
        return "index";
    }
    
    /**
     * 清空当前 Session
     */
    @RequestMapping("/delSession")
    public String delSession(SessionStatus sessionStatus) {
        if (!sessionStatus.isComplete()) {
            sessionStatus.setComplete();
        }
        return "index";
    }
}


相关文章
|
1月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
26 0
|
18天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
18天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
31 3
|
18天前
|
前端开发 Java API
头头是道:揭示Spring MVC如何获取和处理请求头数据
头头是道:揭示Spring MVC如何获取和处理请求头数据
21 1
|
18天前
|
前端开发 Java Spring
参数解密:揭示Spring MVC请求参数处理的实际应用指南
参数解密:揭示Spring MVC请求参数处理的实际应用指南
26 1
|
27天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
1月前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
81 0
|
1月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
46 0
|
2月前
|
缓存 Java Maven
Spring Boot自动配置原理
Spring Boot自动配置原理
48 0
|
1月前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
121 0