一、@SessionAttributes
在默认情况下,ModelMap中的属性作用域是request级别是,也就是说,当本次请求结束后,ModelMap中的属性将销毁。如果希望在多个请求中共享ModelMap中的属性,必须将其属性转存到session中,这样ModelMap的属性才可以被跨请求访问。
Spring允许我们有选择地指定ModelMap中的哪些属性需要转存到session中,以便下一个请求属对应的ModelMap的属性列表中还能访问到这些属性。这一功能是通过类定义处标注@SessionAttributes注解来实现的。
使模型对象的特定属性具有Session范围的作用域
-
packagecom.baobaotao.web;
-
-
…
-
importorg.springframework.ui.ModelMap;
-
importorg.springframework.web.bind.annotation.SessionAttributes;
-
-
@Controller
-
@RequestMapping("/bbtForum.do")
-
@SessionAttributes("currUser")
-
-
publicclassBbtForumController{
-
…
-
@RequestMapping(params="method=listBoardTopic")
-
publicStringlistBoardTopic(@RequestParam("id")inttopicId,Useruser,
-
ModelMapmodel){
-
bbtForumService.getBoardTopics(topicId);
-
System.out.println("topicId:"+topicId);
-
System.out.println("user:"+user);
-
model.addAttribute("currUser",user);
-
return"listTopic";
-
}
-
-
}
我们在 ② 处添加了一个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 信息的共享。
-
@Controller
-
@SessionAttributes("currentUser")
-
publicclassGreetingController{
-
@RequestMapping
-
publicvoidhello(@ModelAttribute("currentUser")
Useruser){
-
-
}
-
}
分享到:
相关推荐
虽然`@ModelAttribute`主要处理请求级的数据,但Spring MVC还提供了`@SessionAttributes`注解,用于将某些模型对象保存在session中,跨多个请求保持状态。`@SessionAttributes`通常用于处理那些在多个请求之间需要...
在Spring MVC中,`@SessionAttribute` 是一个用于在HTTP会话(Session)中存储和检索特定模型属性的注解,以实现数据跨多个HTTP请求的共享。它通常与`@ModelAttribute`配合使用,`@ModelAttribute`注解用于将方法的...
### SpringMVC 处理模型数据详解 #### 模型数据类型 在SpringMVC框架中,模型数据是指从控制器传递到视图层的数据。这些数据可以被用来填充页面,或者进行...而`@ModelAttribute`则为对象的传递和预填充提供了便利。
在Spring MVC框架中,Model和Session是两种不同的数据管理机制,它们在Web应用程序中起着至关重要的作用。这里我们将深入探讨这两个概念以及如何在Spring MVC中进行操作。 首先,我们来理解Spring MVC中的`Model`。...
SpringMVC 3.1.1版本的源码中,Controller接口和相关注解(如@RequestMapping、@SessionAttributes、@ModelAttribute)的实现提供了上述功能的基础。通过阅读源码,我们可以更深入地理解这些特性的内部工作原理。 ...
以上是对SpringMVC中注解的概述,实际开发中还有许多其他注解,如`@SessionAttribute`、`@CookieValue`、`@RequestParam`等,它们共同构成了SpringMVC强大的注解驱动机制。理解并熟练运用这些注解,能让你在...
而`@SessionAttributes`提供了自动化的Session管理,简化了代码,但在某些复杂场景下可能不够灵活。选择哪种方法取决于实际需求和项目规模。理解并掌握这两种方法对于开发高效、稳定的Spring MVC应用至关重要。
SpringMVC通过@ModelAttribute注解帮助模型和视图间的数据传递。 3. **Controller接口和@RequestMapping**:Controller接口定义了处理请求的方法,而@RequestMapping注解用于指定URL映射,可以基于HTTP方法(GET, ...
本文主要围绕"SSM笔记-处理模型数据"这一主题,深入探讨ModelAndView、ModelAttribute以及SessionAttributes在SpringMVC中的应用。 首先,我们来理解ModelAndView。在SpringMVC中,Controller处理完业务逻辑后,...
`@SessionAttributes` 注解用于将特定属性存储在 session 中,以便跨请求访问。`@ModelAttribute` 注解通常用于在请求处理前预先填充一个对象,便于后续操作。 ### 第 5 章 视图解析 SpringMVC 使用 `ViewResolver`...
Session可以使用@SessionAttributes注解来指定Session的名称和范围。 类型转换 SpringMVC提供了类型转换的机制,例如Converter接口,可以自定义类型转换器来实现类型转换。 总结 SpringMVC是基于Java的开源web...
它提供了一个清晰的模型-视图-控制器(MVC)实现,帮助开发者更好地组织代码结构,使应用程序更加易于维护和扩展。 #### 二、请求映射与参数处理 1. **通过`@PathVariable`获取路径参数:** - 在Spring MVC中,...
SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求-响应流程。在SpringMVC中,注解的使用极大地简化了配置,...在实际项目中,还可以结合Spring Boot和Thymeleaf等技术,进一步提升开发效率和应用性能。
在这个过程中,SpringMVC提供了多种机制来实现数据回显,包括模型数据导向视图、@ModelAttribute、Map Model和SessionAttributes等。 模型数据导向视图 在SpringMVC中,模型数据是指控制器传递给视图的数据。模型...
- **@SessionAttributes**:指定要存储在session中的属性。 ### 五、SpringMVC的高级特性 #### 5.1 数据绑定 - **自动类型转换**:SpringMVC能够自动将字符串类型的请求参数转换为目标对象的数据类型。 - **数据...
- `@CookieValue` 和 `@SessionAttributes`:从 Cookie 或 Session 中获取值。 **6. 异常处理** - `@ExceptionHandler`:处理特定类型的异常,提供统一的错误页面或响应。 - `@ControllerAdvice`:全局的控制器增强...
5. `@SessionAttributes`:用于指定哪些属性存储在HTTP Session中。 6. `@ExceptionHandler`:用于处理异常情况。 #### 六、SpringMVC与Struts2的区别 1. **配置方式**:SpringMVC倾向于使用声明式编程,通过注解或...
10. `@SessionAttributes`:用于将模型属性存储在HTTP session中,跨多个请求共享。 11. `@Autowired`:Spring的依赖注入注解,自动将符合类型的bean注入到当前字段或方法参数中。 12. `@Qualifier`:配合`@...
### Spring MVC 注解详解 #### 引言 在现代Java Web开发中,Spring MVC框架以其强大的功能和灵活性占据了举足轻重的地位。...希望本文提供的信息能够帮助开发者们更好地理解和应用Spring MVC中的注解。
此外,可以使用`@SessionAttributes`来管理session级别的数据。 在实际应用中,我们可能还需要配置拦截器(Interceptor),比如登录检查,日志记录等功能。SpringMVC的拦截器通过实现`HandlerInterceptor`接口并...