`
weiqingfei
  • 浏览: 318177 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

Spring boot中使用@SessionAttributes需要注意的地方

    博客分类:
  • Java
阅读更多

在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有值,那么就跳过绑定数据的方法,然后绑定请求数据

 

 

分享到:
评论

相关推荐

    springboot基本使用的一个文档。

    Spring Boot 基本使用指南 本文档旨在指导读者从 Eclipse 中创建一个 Spring ...本文档提供了从 Eclipse 中创建 Spring Boot 项目到使用过程中可能遇到的问题的解决方法,并介绍了 Spring Boot 项目的结构和注意事项。

    Spring中自定义session管理,SpringSession的使用

    3. 使用Session:在Controller方法中,可以使用`@SessionAttributes`注解声明需要在Session中存储的模型属性,然后通过`HttpSession`接口获取或设置Session属性。 五、高级用法 1. 自定义SessionId生成器:通过实现...

    spring session入门

    现在,Spring Session已经配置完毕,你可以像平常一样在Controller中使用`@SessionAttributes`注解来处理会话属性。不过,现在这些属性会被自动序列化并存储到Redis中。 Spring Session还提供了API来手动操作...

    spring-session

    此外,Spring Session 还支持在 RESTful API 中使用 JSON Web Tokens (JWT) 进行会话管理。 3. **配置 Spring Session** 配置 Spring Session 需要在 Spring Boot 应用中添加对应的依赖,并在配置文件中指定会话...

    springboot modal

    在这个链接中,作者可能详细解释了如何在Spring Boot应用中使用Model来传递数据,包括但不限于以下几点: 1. **Model对象的创建**:在Spring Boot的控制器方法中,我们通常会有一个Model类型的参数,如`@...

    spring mvc项目后端源码

    19. **Spring Boot**:Spring MVC 常与 Spring Boot 结合使用,简化项目的初始化和配置。 这个"spring mvc项目后端源码"可能包含了上述部分或全部概念的实现,通过学习和分析这些代码,可以加深对 Spring MVC 框架...

    一头扎进 springmvc 视频教程 java1234出品

    在实际开发中,Spring MVC与Spring Boot结合使用时,可以极大地简化配置,提供开箱即用的Web应用体验。Spring Boot自动配置了大部分Spring MVC的组件,并且集成了许多流行的第三方库,如Thymeleaf、Jackson等。 本...

    Spring MVC实例

    使用 Spring Boot 创建 Web 应用,只需要添加 `spring-boot-starter-web` 依赖,然后通过 `@RestController` 注解和自动配置,即可快速搭建 RESTful API。 总结,Spring MVC 是一个强大且灵活的 MVC 框架,它简化了...

    SpringSession+Redis实现Session共享案例

    - 在Spring MVC的控制器中,使用`@SessionAttributes`注解来声明需要在Session中存储的模型属性。 - 通过`HttpServletRequest`或`HttpSession`对象来访问和修改Session数据,如同在单服务器环境中一样。 5. **...

    spring-web-2.5.jar

    org.springframework.web.bind.annotation.SessionAttributes.class org.springframework.web.bind.support.ConfigurableWebBindingInitializer.class org.springframework.web.bind.support....

    SpringMVC中注解的详细使用

    SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求-响应流程。在SpringMVC中,注解的使用极大地简化了配置,...在实际项目中,还可以结合Spring Boot和Thymeleaf等技术,进一步提升开发效率和应用性能。

    springsessiondemo:Spring会议

    4. **Spring Session与Spring MVC集成**:理解如何在Spring MVC控制器中使用@SessionAttributes注解来管理请求之间的状态。 5. **分布式会话策略**:探索不同的会话复制策略,如会话粘滞(stickiness)、无状态会话...

    springMVC 注解版

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要处理 HTTP 请求和响应。这个“springMVC 注解版”可能...在实际项目中,结合 Spring Boot 可以进一步简化配置,快速启动 Web 服务。

    SpringMVC精品资源--A lightweight and rest-oriented web framewo.zip

    此外,`@SessionAttributes`可以将模型对象保存在会话中,跨多个请求共享数据。 REST(Representational State Transfer)是SpringMVC的一个重要特性,它鼓励使用HTTP协议的动词(GET、POST、PUT、DELETE等)来表示...

    tomcat集群利用redis实现session共享所需jar包

    - 如果使用Spring MVC,需要在`web.xml`或Spring Boot的配置类中启用Spring Session: ```xml <filter-name>springSessionRepositoryFilter <filter-class>org.springframework.session.web....

    Java面试框架高频问题2019

    - **request/session/globalSession**:Web环境中使用的,与HTTP请求/会话/全局会话绑定。 **问题六:Bean注入属性有哪几种方式?** 1. **构造器注入**:通过构造器参数传递依赖。 2. **setter方法注入**:通过...

    car-shopping-application:该应用程序使用Spring MVC框架和Spring安全性

    在Spring MVC中,模型对象可以通过实现`Serializable`接口确保其在请求之间持久化,或者通过使用`SessionAttributes`注解在会话中保留。 **2. View(视图)** 视图负责将模型数据呈现给用户。Spring MVC支持多种...

    java软件工程师面试基本题.docx

    3. **Spring注解**:Spring框架支持注解驱动的配置,如`@Autowired`用于自动装配bean,`@Resource`用于按名称注入bean,`@SessionAttributes`用于在HTTP会话中存储属性。 4. **Cookie与Session的区别**:Cookie是...

Global site tag (gtag.js) - Google Analytics