在Spring Boot中,如果想把数据保存在session里,当然可以使用原生Request直接保存session,有个更方便的方法,那就是使用注解@SessionAttributes。
使用这个注解,需要搞清楚它的运行原理,也就是什么时候保存,什么时候取出,否则当得出非期望的结果时会很疑惑。
尤其当和注解@ModelAttribute混用的时候,需要搞清楚优先级。
1.Session的保存。
当某个Controller类里使用了@SessionAttributes注解后,请求执行完handler后,会把保存在model里指定的数据保存到session里。
由于执行时机的问题,当跟注解@ResponseBody混用的时候,会出错。
使用@ResponseBody注解,返回一个实体类时,ReturnValueHandler用的是RequestResponseBodyMethodProcessor,在内部直接会把结果写入到response,然后关闭。
然后再往session里写数据的话,就已经写不进去了。
解决的方法是不用注解@ResponseBody,直接返回一个MappingJackson2JsonView实例即可。
2.Session的读取
如果一个Controller类里同时使用了@SessionAttributes,有个数据绑定的方法上用@ModelAttribute,并且在一个请求处理handler的参数里,用了@ModelAttribute。
先读取session,如果session没值,那么就执行绑定数据的方法,然后绑定请求数据
先读取session,如果session有值,那么就跳过绑定数据的方法,然后绑定请求数据
相关推荐
Spring Boot 基本使用指南 本文档旨在指导读者从 Eclipse 中创建一个 Spring ...本文档提供了从 Eclipse 中创建 Spring Boot 项目到使用过程中可能遇到的问题的解决方法,并介绍了 Spring Boot 项目的结构和注意事项。
3. 使用Session:在Controller方法中,可以使用`@SessionAttributes`注解声明需要在Session中存储的模型属性,然后通过`HttpSession`接口获取或设置Session属性。 五、高级用法 1. 自定义SessionId生成器:通过实现...
现在,Spring Session已经配置完毕,你可以像平常一样在Controller中使用`@SessionAttributes`注解来处理会话属性。不过,现在这些属性会被自动序列化并存储到Redis中。 Spring Session还提供了API来手动操作...
此外,Spring Session 还支持在 RESTful API 中使用 JSON Web Tokens (JWT) 进行会话管理。 3. **配置 Spring Session** 配置 Spring Session 需要在 Spring Boot 应用中添加对应的依赖,并在配置文件中指定会话...
在这个链接中,作者可能详细解释了如何在Spring Boot应用中使用Model来传递数据,包括但不限于以下几点: 1. **Model对象的创建**:在Spring Boot的控制器方法中,我们通常会有一个Model类型的参数,如`@...
19. **Spring Boot**:Spring MVC 常与 Spring Boot 结合使用,简化项目的初始化和配置。 这个"spring mvc项目后端源码"可能包含了上述部分或全部概念的实现,通过学习和分析这些代码,可以加深对 Spring MVC 框架...
在实际开发中,Spring MVC与Spring Boot结合使用时,可以极大地简化配置,提供开箱即用的Web应用体验。Spring Boot自动配置了大部分Spring MVC的组件,并且集成了许多流行的第三方库,如Thymeleaf、Jackson等。 本...
使用 Spring Boot 创建 Web 应用,只需要添加 `spring-boot-starter-web` 依赖,然后通过 `@RestController` 注解和自动配置,即可快速搭建 RESTful API。 总结,Spring MVC 是一个强大且灵活的 MVC 框架,它简化了...
- 在Spring MVC的控制器中,使用`@SessionAttributes`注解来声明需要在Session中存储的模型属性。 - 通过`HttpServletRequest`或`HttpSession`对象来访问和修改Session数据,如同在单服务器环境中一样。 5. **...
org.springframework.web.bind.annotation.SessionAttributes.class org.springframework.web.bind.support.ConfigurableWebBindingInitializer.class org.springframework.web.bind.support....
SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求-响应流程。在SpringMVC中,注解的使用极大地简化了配置,...在实际项目中,还可以结合Spring Boot和Thymeleaf等技术,进一步提升开发效率和应用性能。
4. **Spring Session与Spring MVC集成**:理解如何在Spring MVC控制器中使用@SessionAttributes注解来管理请求之间的状态。 5. **分布式会话策略**:探索不同的会话复制策略,如会话粘滞(stickiness)、无状态会话...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要处理 HTTP 请求和响应。这个“springMVC 注解版”可能...在实际项目中,结合 Spring Boot 可以进一步简化配置,快速启动 Web 服务。
此外,`@SessionAttributes`可以将模型对象保存在会话中,跨多个请求共享数据。 REST(Representational State Transfer)是SpringMVC的一个重要特性,它鼓励使用HTTP协议的动词(GET、POST、PUT、DELETE等)来表示...
- 如果使用Spring MVC,需要在`web.xml`或Spring Boot的配置类中启用Spring Session: ```xml <filter-name>springSessionRepositoryFilter <filter-class>org.springframework.session.web....
- **request/session/globalSession**:Web环境中使用的,与HTTP请求/会话/全局会话绑定。 **问题六:Bean注入属性有哪几种方式?** 1. **构造器注入**:通过构造器参数传递依赖。 2. **setter方法注入**:通过...
在Spring MVC中,模型对象可以通过实现`Serializable`接口确保其在请求之间持久化,或者通过使用`SessionAttributes`注解在会话中保留。 **2. View(视图)** 视图负责将模型数据呈现给用户。Spring MVC支持多种...
3. **Spring注解**:Spring框架支持注解驱动的配置,如`@Autowired`用于自动装配bean,`@Resource`用于按名称注入bean,`@SessionAttributes`用于在HTTP会话中存储属性。 4. **Cookie与Session的区别**:Cookie是...