`

spring注解之@SessionAttributes

 
阅读更多

 一、@ModelAttribute

 

 在默认情况下,ModelMap 中的属性作用域是 request 级别是,也就是说,当本次请求结束后,ModelMap中的属性将销毁。如果希望在多个请求中共享 ModelMap 中的属性,必须将其属性转存到 session 中,这样ModelMap 的属性才可以被跨请求访问。

 

      Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。这一功能是通过类定义处标注 @SessionAttributes 注解来实现的。

 

使模型对象的特定属性具有 Session 范围的作用域

 

 

Java代码  收藏代码
  1. package com.baobaotao.web;  
  2.   
  3. …  
  4. import org.springframework.ui.ModelMap;  
  5. import org.springframework.web.bind.annotation.SessionAttributes;  
  6.   
  7. @Controller  
  8. @RequestMapping("/bbtForum.do")  
  9. <span style="color: #008000;">@SessionAttributes("currUser"//①将ModelMap中属性名为currUser的属性  
  10. //放到Session属性列表中,以便这个属性可以跨请求访问</span>  
  11. public class BbtForumController {  
  12. …  
  13.     @RequestMapping(params = "method=listBoardTopic")  
  14.     public String listBoardTopic(@RequestParam("id")int topicId, User user,  
  15. ModelMap model) {  
  16.         bbtForumService.getBoardTopics(topicId);  
  17.         System.out.println("topicId:" + topicId);  
  18.         System.out.println("user:" + user);  
  19.         model.addAttribute("currUser",user); <span style="color: #008000;">//②向ModelMap中添加一个属性</span>  
  20.         return "listTopic";  
  21.     }  
  22.   
  23. }  

    我们在 ② 处添加了一个 ModelMap 属性,其属性名为 currUser,而 ① 处通过 @SessionAttributes 注解将 ModelMap 中名为 currUser 的属性放置到 Session ,所以我们不但可以在 listBoardTopic() 请求所对应的 JSP 视图页面中通过 request.getAttribute(currUser)  session.getAttribute(currUser) 获取 user 对象,还可以在下一个请求所对应的 JSP 视图页面中通过 session.getAttribute(currUser) ModelMap#get(currUser) 访问到这个属性。

 

    这里我们仅将一个 ModelMap 的属性放入 Session 中,其实 @SessionAttributes 允许指定多个属性。你可以通过字符串数组的方式指定多个属性,如 @SessionAttributes({attr1,attr2})。此外,@SessionAttributes 还可以通过属性类型指定要 session 化的 ModelMap 属性,如@SessionAttributes(types = User.class),当然也可以指定多个类,如 @SessionAttributes(types = {User.class,Dept.class}),还可以联合使用属性名和属性类型指定:@SessionAttributes(types = {User.class,Dept.class},value={attr1,attr2})

 

二、@ModelAttribute

 

     我们可以在需要访问 Session 属性的 controller 上加上 @SessionAttributes,然后在 action 需要的 User 参数上加上 @ModelAttribute,并保证两者的属性名称一致。SpringMVC 就会自动将 @SessionAttributes 定义的属性注入到 ModelMap 对象,在 setup action 的参数列表时,去 ModelMap 中取到这样的对象,再添加到参数列表。只要我们不去调用 SessionStatus 的 setComplete() 方法,这个对象就会一直保留在 Session 中,从而实现 Session 信息的共享。

Java代码  收藏代码
  1. @Controller  
  2. <span style="color: #008000;">@SessionAttributes("currentUser")</span>  
  3. public class GreetingController{  
  4. @RequestMapping  
  5. public void hello<span style="color: #008000;">(@ModelAttribute("currentUser")</span> User user){  
  6.   //user.sayHello()  
  7. }  
  8. }  
分享到:
评论

相关推荐

    spring学习之@SessionAttributes实例解析

    在Spring MVC中,`@SessionAttributes`是一个非常实用的注解,它允许我们将ModelMap中的特定属性持久化到HTTP Session中,以便在多个请求之间共享数据。这在处理需要跨请求保持状态的情况时非常有用,比如用户登录...

    SpringMVC ModelAndView、Model及Map、@SessionAttributes场景与应用

    在Spring MVC框架中,ModelAndView、Model、Map以及@SessionAttributes是四个关键概念,它们在处理请求、数据传输和会话管理中起着至关重要的作用。让我们深入探讨这些概念及其在实际开发中的应用场景。 首先,`...

    Spring MVC SessionAttributes注解.docx

    在Spring MVC框架中,`@SessionAttributes`是一个非常重要的注解,它允许开发者将特定的模型数据持久化到HTTP会话(session)中,以便在多个请求之间共享这些数据。通常,模型数据在请求完成后就会从内存中清除,但...

    SpringMVC处理模型数据.docx

    在Spring MVC框架中,模型数据的处理是核心功能之一,它允许开发者将处理结果传递给视图层进行渲染。在通常情况下,模型数据是通过`ModelAndView`、`Map`或者`Model`接口来存储,并在请求之间进行传递。然而,如果...

    Spring3MVC注解教程.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...

    spring 注解开发说明

    ### Spring注解开发详解 随着软件工程的发展与技术演进,传统的XML配置方式逐渐显得冗余且不便于维护。为了简化开发流程并提高程序的可读性和可维护性,Spring框架自2.5版本起引入了注解驱动的配置方式。这种基于...

    spring注解大全和应用

    Spring框架的注解是其核心特性之一,极大地简化了Java应用程序的开发,特别是对于依赖注入和Web MVC。本文将深入探讨Spring中常见的注解及其应用。 1. **@Controller**:此注解用于标记一个类作为Spring MVC的控制...

    Spring MVC 3.0实战指南.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...

    Spring表单向导控制器(实现数据缓存)

    当在网页填写表单信息过多的时候,一般会采用向导式的分页填写...该例子前端是easyui+Jsp实现,后台是采用了spirng @SessionAttributes(替代新版本spring不支持AbstractWizardFormController)这个注解实现表单控制器

    spring3.0MVC注解(附实例).docx

    Spring 3.0 MVC 注解是Spring框架中用于简化Web应用开发的重要特性,特别是在处理HTTP请求和响应方面。这些注解允许开发者以声明式的方式定义控制器、方法映射以及数据绑定等行为,极大地提高了代码的可读性和可维护...

    spring和Struts2注解文档

    ### Spring注解详解 #### 1.1 Spring注解说明 Spring框架通过引入注解,极大地简化了Java开发中的配置工作,使得开发者能够更加专注于业务逻辑的编写。Spring注解主要应用于依赖注入、控制器定义、事务管理、缓存...

    spring—MVC的注解实例

    除了上述的注解,Spring MVC还有许多其他注解,如`@SessionAttributes`用于在session中存储模型数据,`@ExceptionHandler`用于全局异常处理,`@InitBinder`用于初始化数据绑定行为,等等。这些注解共同构建了一个...

    Spring MVC常用注解

    在 Spring MVC 中,注解扮演着非常重要的角色,它们使得代码更加简洁、易读,并减少了 XML 配置。下面将详细讲解 Spring MVC 中常用的注解。 1. `@Controller`:这个注解标记一个类作为 Spring MVC 的控制器。控制...

    基于注解驱动的 Spring MVC

    这种零配置或少配置的方式,提高了开发效率,降低了学习曲线,使得 Spring MVC 成为了现代 Java Web 开发的首选框架之一。随着 Spring 框架的不断迭代和增强,Spring MVC 的注解功能也会越来越丰富,为开发者提供更...

    spring的mvc,注解驱动

    以上只是Spring MVC注解驱动开发的一部分知识点,实际应用中还有许多其他注解和配置,如`@RestController`、`@SessionAttributes`、`@Async`等,以及AOP(面向切面编程)、Spring Data JPA等集成技术。学习和熟练...

    Spring 2.5 基于注解驱动的 Spring MVC.docx

    7. **@SessionAttributes**:这个注解用于将特定的模型属性存储在 HTTP Session 中,以便跨多个请求共享数据。 通过这些注解,Spring MVC 提供了一种简洁且可读性强的配置方式,使得开发者能够更加专注于业务逻辑,...

    Spring2.5 注解介绍(3.0通用)

    Spring 2.5引入了对注解的强大支持,这些注解在Spring 3.0之后仍然通用,极大地简化了配置并增强了代码的可读性。本文将详细介绍Spring中的一些核心注解及其用法。 首先,要使注解生效,我们需要在Spring配置中注册...

    Spring2.5_注解介绍(3.0通用).pdf

    ### Spring2.5与3.0注解详解 在探讨Spring框架中注解的应用之前,我们首先需要理解注解在Java编程语言中的基础概念。注解是Java SE 5引入的一种元数据机制,用于在代码中嵌入元数据,而Spring框架充分利用了这一...

    Spring MVC的常用注解

    在Spring MVC中,注解的使用极大地简化了配置,使得开发更加高效和简洁。下面我们将深入探讨Spring MVC中的一些关键注解及其用法。 1. `@Controller`:这个注解用于标记一个类作为Spring MVC的控制器。控制器类负责...

Global site tag (gtag.js) - Google Analytics