@ModelAttribute和@SessionAttributes的用法

1.@SessionAttribute是Controller类级别的注解,作用是为了将指定名称或类型的隐含模型中的对象放置到Session作用域中,实现多次请求共享参数,在每次请求的时候,使用@SessionAttributes添加的对象也会被添加到隐含模型对象中,我们可以通过@ModelAttribute来获取隐含模型中的对象。

注:向隐含模型对象中添加数据的几种方式:1、Map/Model/ModelMap类型的入参 2、@ModelAttribute注解标注在方法上或者方法的入参处,标注在方法的入参数,既可以从隐含模型中取数据,又可以向隐含模型对象中添加数据。

2.@ModelAttribute标注的对象是request级别的,数据最终都会被放置到request作用域中,隋着request的销毁而销毁;@SessionAttribute标示数据为session级别,清除的方式为,在方法的入参中添加SessionStatus类型的入参,然后使用SessionStatus.setComplete()来清除,注意SessionStatus.setComplete()只会清除通过@SessionAttributes方式添加的数据,而不会清除HttpSession中数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@Attribute 和 @ModelAttribute 是 Spring MVC 中用于处理模型数据的注解,它们有以下区别: 1. 作用范围不同:@SessionAttribute 用于将属性值保存在会话作用域中,而 @ModelAttribute 则是用于将属性值添加到模型中,它的作用范围可以是请求、会话或应用级别。 2. 生命周期不同:@SessionAttribute 的生命周期与会话一致,即属性值会在会话期间一直存在,直到会话结束或手动移除。而 @ModelAttribute 的生命周期只在请求处理过程中有效,随着请求的完成,模型中的属性值即被销毁。 3. 使用方式不同:@SessionAttribute 注解可以应用在控制器类上或者控制器方法参数上,以指定哪些属性需要保存在会话中。而 @ModelAttribute 注解主要用于控制器方法参数上,用于绑定请求参数到方法参数或添加模型属性。 - 控制器类上使用 @SessionAttributes: ```java @Controller @SessionAttributes("user") public class UserController { ... } ``` - 控制器方法参数上使用 @SessionAttribute: ```java @GetMapping("/user") public String getUserInfo(@SessionAttribute("user") User user) { ... } ``` - 控制器方法参数上使用 @ModelAttribute: ```java @GetMapping("/user") public String getUserInfo(@ModelAttribute("user") User user) { ... } ``` 总的来说,@SessionAttribute 和 @ModelAttribute 都用于处理模型数据,但是 @SessionAttribute 用于在会话中保存属性值,而 @ModelAttribute 则是用于绑定请求参数或添加模型属性。它们的使用方式和作用范围不同,需要根据具体的需求选择合适的注解来处理模型数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值