`

@SessionAttributes与ModelAttribute

阅读更多

 

     @ModelAttribute

  •  1.@ModelAttribute注释在方法上
  •       1.1 @ModelAttribute加再void方法上
@ModelAttribute
	public void setCommonData(@RequestParam String param,Model model){
		model.addAttribute("message", param);
	}
	@RequestMapping(value="/hello")
	public String hello(){
		
		return "attributes";
	}

 在执行/hello所在Controller中的方法之前会先执行setCommonData方法,并且会将请求参数/hello?param=hello解析到message中。这个用法比较适合用于设置公共数据。

     1.2@ModelAttribute加在返回具体对象的方法上

@ModelAttribute
	public User fetchUser(){
		
		return new User();
	}

 这时,虽然model的属性名没有直接指定,但是默认根据返回的对象类型隐式给出。如上,返回为User对象,则model的属性名为user,对应属性对象为new User();

   1.3 上面两种情况的组合使用方法

@ModelAttribute("message")
	public String setCommonData(@RequestParam String param,Model model){
		//model.addAttribute("message", param);
		return param;
	}
	@RequestMapping(value="/hello")
	public String hello(){
		
		return "attributes";
	}

    1.4 @RequestMapping与@ModelAttribute一起加在方法上

    

        @RequestMapping(value="/attributes")
	@ModelAttribute("message")
	public String attributes(){
		
		return "helloattribute";				
	}

   这时,返回值就不是一个View名称了 而是model的属性值。视图名称将会根据/attributes生成

  •  2.@ModelAttribute注释在属性值上
  •    2.1 @ModelAttribute注释在一个方法的参数上
@ModelAttribute("user")
	public User setCommonData(@RequestParam String param,Model model){
		return new User("Rose","123",23);
	}
        @RequestMapping(value="/onParam")
	public String onParam(@ModelAttribute("user") User user){
		user.setUsername("Tom");
		return "attributes";
	}

 user可以从setCommonData中获取 也可以通过url里的参数获取(此时需要user具有无参构造器)

此时,如果在Controller类上有@SessionAttributes("user")

则user的scope为session否则其scope为request。

默认情况下,ModelMap中的属性的scope是request级别的。也即,一个request请求结束,ModelMap中的属性将会被销毁。如果希望将ModelMap中的属性在多个请求中共享,我们需要使用@SessonAttributes注解来完成。

@SessionAttributes

使用方法:

@Controller
@RequestMapping(value="/attributes")
@SessionAttributes("user")//将user对象透明地加入到Session中
public class Attributes {

 其实,

@SessionAttributes允许指定多个属性。如@SessionAttributes({"attr1","attr2"})

@SessionAttributes允许通过属性类型指定要Session化的ModelMap属性。如@SessionAttributes(types=User.class)也可指定多个@SessionAttributes(types={User.class,Company.class})

也可以联合属性名和属性类型来指定@SessionAttributes(types={User.class,Company.class},value={"attr1","attr2"})

只要我们不调用SessionStatus的setComplete方法,这些对象会一直保存在Session中。

       @RequestMapping(value="/complete")
	public String complete(SessionStatus sessionStatus){
		sessionStatus.setComplete();//清除@SessionAttributes在Session中存储的对象信息
		return "complete";
	}

 

 

 

 

 

 

分享到:
评论

相关推荐

    spring学习之@SessionAttributes实例解析

    `@ModelAttribute`与`@SessionAttributes`常常一起使用。`@ModelAttribute`主要用于将Session中的属性绑定到控制器方法的参数上。当我们在控制器方法的参数上使用`@ModelAttribute`(如`public String ...

    SpringMVC基础—— ModelAttribute和 SessionAttribute.docx

    `@ModelAttribute`通常与`@RequestMapping`一起使用,以确保在处理请求时,所需的数据已经准备就绪。 1. **@ModelAttribute 注解的使用** 当一个方法被`@ModelAttribute`标记时,Spring MVC会在调用实际的处理...

    SpringMVC-4 处理模型数据

    通过ModelAndView、Map与Model、@SessionAttributes和@ModelAttribute注解来处理模型数据;其中,@ModelAttribute是重点,说明其运行流程并进行代码分析,最终给出SpringMVC目标方法的POJO类型参数的入参全过程,并...

    SpringMVC处理模型数据-2.docx

    当控制器方法返回一个`ModelAndView`对象时,该对象中的模型数据会被放入`Request`域对象中,并与视图一同传递给前端显示。 **示例代码:** ```java @RequestMapping("/testModelAndView") public ModelAndView ...

    springmvc处理模型数据ModelAndView过程详解

    SpringMVC框架提供了多种方式来处理模型数据,包括使用ModelAndView、Map及Model、@SessionAttributes和ModelAttribute等。下面我们将详细介绍SpringMVC处理模型数据ModelAndView过程。 一、使用ModelAndView处理...

    [Spring MVC] - ModelAttribute使用.docx

    当我们在一个控制器方法的参数上使用`@ModelAttribute`时,Spring MVC会尝试从请求中获取与注解参数名相匹配的数据,例如表单提交的数据或URL路径变量。然后,这些数据会被用来初始化或者更新一个模型实体对象。例如...

    Spring MVC 3.0实战指南.ppt

    访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析...

    springMVC接收参数的几种注解.pdf

    5. **@SessionAttributes 和 @ModelAttribute** `@SessionAttributes` 注解用于声明需要在 HTTP 会话中存储的属性,而 `@ModelAttribute` 通常用于从请求参数或会话中创建或更新模型对象。例如: ```java @...

    Spring3MVC注解教程.ppt

    访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 ...

    SpringMVC杂记(三) 向导型Controller的实现(基于SpringMVC 3.1.1)

    SpringMVC 3.1.1版本的源码中,Controller接口和相关注解(如@RequestMapping、@SessionAttributes、@ModelAttribute)的实现提供了上述功能的基础。通过阅读源码,我们可以更深入地理解这些特性的内部工作原理。 ...

    一个注解解决页面重复提交

    在Java Web开发中,Spring框架提供了`@SessionAttributes`和`@ModelAttribute`注解,可以结合自定义拦截器实现防重复提交。 1. **@SessionAttributes**:这个注解用于将模型属性存储在Session中。当我们处理表单...

    SpringMVC SessionAttribute 使用说明.docx

    它通常与`@ModelAttribute`配合使用,`@ModelAttribute`注解用于将方法的返回值或参数绑定到模型(Model)中,以便在视图解析时可用。 ### `@ModelAttribute` 的作用 `@ModelAttribute` 有以下两个主要用途: 1. **...

    SSM笔记-处理模型数据

    本文主要围绕"SSM笔记-处理模型数据"这一主题,深入探讨ModelAndView、ModelAttribute以及SessionAttributes在SpringMVC中的应用。 首先,我们来理解ModelAndView。在SpringMVC中,Controller处理完业务逻辑后,...

    SpringMVC 常用注解类视频详解

    15. `@ModelAttribute("attrName")`:配合`@SessionAttributes`使用,可以从HttpSession中获取或向其中添加属性。 通过深入理解并熟练运用这些注解,开发者可以有效地构建和维护Spring MVC应用程序,提高开发效率和...

    springMVC接收参数的几种注解.docx

    - `@ModelAttribute` 通常与表单绑定和模型属性结合使用,它可以从请求参数中获取数据并创建一个对象实例,或者将对象添加到模型中。例如: ```java @PostMapping("/submitForm") public String submitForm(@...

    Spring MVC常用注解

    常与 JSON 或 XML 数据交换配合使用。 8. `@SessionAttributes`:用于在 HTTP session 中存储数据,以便在多个请求间共享。例如: ```java @Controller @SessionAttributes("cart") public class ...

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

    - `@ModelAttribute` 用于将请求参数绑定到一个对象,常用于表单数据的处理。此外,它还可以用于方法参数的预处理,如校验或填充默认值。 8. **@SessionAttributes** - `@SessionAttributes` 注解用于在HTTP会话...

    java或Java框架中常用的注解及其作用详解_资料.docx

    - `@ModelAttribute`和`@SessionAttributes`:在Spring MVC中,`@ModelAttribute`用于将请求参数绑定到模型对象,`@SessionAttributes`则用于在HTTP会话中存储模型对象。 - `@PathVariable`:从URL路径中提取参数...

    annotation-springMVC.rar_springmvc_springmvc API chm

    1. `@ModelAttribute`:用于绑定请求参数到模型对象。通常与`@RequestMapping`结合使用,将请求参数转化为模型对象。 2. `@SessionAttributes`:用于指定需要存储在HttpSession中的模型属性,可以在多个请求间共享...

    sample-springmvc

    样本SpringMVC Spring MVC表单-验证,数据绑定,验证Spring注释-@ RequestParam,@ PathVariable,@ ModelAttribute,@ SessionAttributes Spring安全Spring国际化Spring异常处理Spring基本REST服务用户-hsetpaing...

Global site tag (gtag.js) - Google Analytics