A、@SessionAttributes
org.springframework.web.bind.annotation.SessionAttributes
public @interface SessionAttributes
Annotation that indicates the session attributes that a specific handler uses. This will typically list the names of model attributes which should be transparently stored in the session or some conversational storage, serving as form-backing beans. Declared
at the type level, applying to the model attributes that the annotated handler class operates on.
这个表明会话属性的注释被特定的处理器使用。它通常列出存储在会话中模型属性的名称。声明在类级别,适用于这个注释的处理器类可以操作的模型属性。
NOTE: Session attributes as indicated using this annotation correspond to a specific handler's model attributes, getting transparently stored in a conversational session. Those attributes will be removed once the handler indicates completion of its conversational
session. Therefore, use this facility for such conversational attributes which are supposed to be stored in the session temporarily during the course of a specific handler's conversation.
注意:这个注释表明使用会话中的session就像使用一个特定的模型属性。一旦处理器完成这些属性也将被删除。因此使用这种会话属性的机制,都应支持在一个特定的会话过程中临时存储。
For permanent session attributes, e.g. a user authentication object, use the traditional session.setAttribute method instead. Alternatively, consider using the attribute management capabilities of the generic WebRequest interface.
永久会话属性(如:用户身份验证对象),请使用传统的session.setAttribute方法。另外,也可考虑使用WebRequest。
NOTE: When using controller interfaces (e.g. for AOP proxying), make sure to consistently put all your mapping annotations - such as @RequestMapping and @SessionAttributes - on the controller interface rather than on the implementation class.
注意,当时有Controller接口,确保始终把@RequestMapping和@SessionAttributes放在控制器接口上而不是实现类上。
属性
String[] value
The names of session attributes in the model, to be stored in the session or some conversational storage.
存储在会话中的会话属性名称。
Note: This indicates the model attribute names. The session attribute names may or may not match the model attribute names; applications should not rely on the session attribute names but rather operate on the model only.
注意,这里指定的模型属性名称。会话属性名称不一定匹配模型属性名称。应用程序不应该依赖会话属性名称。
Class[] types
The types of session attributes in the model, to be stored in the session or some conversational storage. All model attributes of this type will be stored in the session, regardless of attribute name.
存储在会话中的会话属性类型。这种类型的所有模型属性都将存储在会话中,无论属性名称是什么。
B、举例说明
范例1:通过Model绑定
Spring允许我们有选择地指定Model中的哪些属性需要转存到session中,以便下一个请求可通过Session来访问到这些属性。这一功能是通过类定义处标注@SessionAttributes注解来实现的。
@Controller
@RequestMapping(value = "login")
@SessionAttributes("mysession")
//定义把Model中的mysession属性的值绑定到Session中
public class LoginController {
@RequestMapping(method = RequestMethod.POST)
public String login(@ModelAttribute User user, ModelMap model) {
String viewName = "";
boolean check = true;
if (check) {
model.addAttribute("mysession", "123");
viewName = "redirect:/home";
} else {
viewName = "redirect:/";
}
return viewName;
}
}
这样我们不但可以在请求所对应的JSP视图页面中通过request.getAttribute()和session.getAttribute()获取mysession,还可以在下一个请求所对应的JSP视图页面中通过session.getAttribute()或ModelMap#get()访问到这个属性。
这里我们仅将一个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”})。
范例2:
通过@ModelAttribute绑定
我们使用@ModelAttribute把表单自动绑定到对象上,那这个对象也可以通过@ModelAttribute(“”)绑定到Session中。
@Controller
@RequestMapping(value = "login")
@SessionAttributes("user")
//此处定义需要绑定到session中的model名称
public class LoginController {
@RequestMapping(method = RequestMethod.POST)
public String login(
@ModelAttribute("user") User user,ModelMap model){
//@ModelAttribute将绑定到session中
String viewName = "";
boolean check = true;
if (check) {
viewName = "redirect:/home";
} else {
viewName = "redirect:/";
}
return viewName;
}
}
范例3:@SessionAttributes清除
@SessionAttributes需要清除时,使用SessionStatus.setComplete();来清除。注意,它只清除@SessionAttributes的session,不会清除HttpSession的数据。故如用户身份验证对象的session一般不同它来实现,还是用session.setAttribute等传统的方式实现。
@Controller
@RequestMapping(value = "login")
@SessionAttributes("mysession")
// 定义把Model中的mysession属性的值绑定到Session中
public class LoginController {
@RequestMapping(method = RequestMethod.POST)
public String login(@ModelAttribute User user, ModelMap model,
SessionStatus sessionStatus) {
String viewName = "";
boolean check = true;
if (check) {
model.addAttribute("mysession", "1233");
viewName = "redirect:/home";
} else {
viewName = "redirect:/";
}
sessionStatus.setComplete();
return viewName;
}
}
分享到:
相关推荐
### SpringMVC 处理模型数据详解 #### 模型数据类型 在SpringMVC框架中,模型数据是指从控制器传递到视图层的数据。这些数据可以被用来填充页面,或者进行其他业务逻辑处理。SpringMVC提供了多种方式来处理模型...
SpringMVC处理模型数据ModelAndView过程详解 SpringMVC框架提供了多种方式来处理模型数据,包括使用ModelAndView、Map及Model、@SessionAttributes和ModelAttribute等。下面我们将详细介绍SpringMVC处理模型数据...
15. `@ModelAttribute("attrName")`:配合`@SessionAttributes`使用,可以从HttpSession中获取或向其中添加属性。 通过深入理解并熟练运用这些注解,开发者可以有效地构建和维护Spring MVC应用程序,提高开发效率和...
- `@ModelAttribute`和`@SessionAttributes`:在Spring MVC中,`@ModelAttribute`用于将请求参数绑定到模型对象,`@SessionAttributes`则用于在HTTP会话中存储模型对象。 - `@PathVariable`:从URL路径中提取参数...
《SpringMVC注解详解与应用》 SpringMVC作为Java Web开发中广泛使用的轻量级框架,极大地简化了Web应用程序的构建。其中,注解的使用是SpringMVC的一大特色,它使得代码更加简洁、易读,同时也提高了开发效率。下面...
### SpringMVC详解及注解说明 #### 一、引言 随着软件开发技术的不断发展,基于注解(Annotation)的配置方式越来越受到开发者们的青睐。Spring框架自2.5版本开始,便提供了完全基于注解配置Bean的能力,极大地简化...
SpringMVC 框架技术详解 SpringMVC 是 Spring 家族的一款专注于解决控制器层问题的框架技术。它提供了许多实用的功能和机制来帮助开发者快速构建 Web 应用程序。本篇文章将对 SpringMVC 的数据管理、Ajax 交互、...
### Spring MVC 注解详解 #### 一、`@ResponseBody` `@ResponseBody` 是一个非常重要的注解,在Spring MVC中主要用于将控制器返回的对象直接序列化为指定格式的数据并将其写入HTTP响应体中,通常用于JSON或XML数据...
### Spring MVC 注解详解 #### 引言 在现代Java Web开发中,Spring MVC框架以其强大的功能和灵活性占据了举足轻重的地位。其中,注解是实现其诸多特性的重要手段之一。本文旨在全面解析Spring MVC中常用的注解,...
_SPRINGMVC数据回显机制详解_ 在本文中,我们将详细介绍SpringMVC如何进行数据回显。数据回显是指在SpringMVC中,将数据从控制器传递到视图的过程。在这个过程中,SpringMVC提供了多种机制来实现数据回显,包括模型...
### Spring MVC知识点详解 #### 一、Spring MVC简介与核心概念 **Spring MVC** 是 Spring 框架的一部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个清晰的模型-视图-控制器(MVC)实现,帮助开发者更好...
### Spring2.5与3.0注解详解 在探讨Spring框架中注解的应用之前,我们首先需要理解注解在Java编程语言中的基础概念。注解是Java SE 5引入的一种元数据机制,用于在代码中嵌入元数据,而Spring框架充分利用了这一...
### Spring MVC注释文档知识点详解 #### 概述 随着技术的发展与演进,软件开发领域不断出现新的设计理念和技术框架。Spring MVC作为Spring框架的重要组成部分之一,在Spring 2.5版本中引入了基于注解的配置方式,...
【Spring MVC注解详解】 Spring MVC 是 Spring 框架的一部分,主要负责处理 Web 应用中的请求和响应。在 Spring 2.5 版本之后,Spring MVC 引入了注解驱动的功能,极大地简化了控制器(Controller)的配置和使用。...
《Spring框架3.1.1.RELEASE及其文档详解》 Spring框架是Java开发中的核心工具集,它极大地简化了企业级应用的构建过程。这里我们聚焦于Spring Framework 3.1.1.RELEASE版本,这是一个稳定且广泛使用的版本,包含了...
除了这些基本的注解,还可以结合使用`@ModelAttribute`、`@SessionAttributes`等注解来处理更复杂的场景,如模型绑定和会话数据管理。 总的来说,Java Spring MVC的Controller机制提供了强大的功能来处理HTTP请求,...