百度搜索 @SessionAttribute

这一句绝大多数文章中不存在:

如果Model中没有name参数,而session中存在一个name参数,那么SessionAttribute会讲这个参数塞进Model中

@SessionAttribute使用详解

@ModelAttribute注解作用在方法上或者方法的参数上,表示将被注解的方法的返回值或者是被注解的参数作为Model的属性加入到Model中,然后Spring框架自会将这个Model传递给ViewResolver。Model的生命周期只有一个http请求的处理过程,请求处理完后,Model就销毁了。

如果想让参数在多个请求间共享,那么可以用到要说到的@SessionAttribute注解

SessionAttribute只能作用在类上

@Controller
@RequestMapping("sc")
@SessionAttributes("name")
public class SessionController {
@RequestMapping("session")
public String sessions(Model model,HttpSession session){
model.addAttribute("name", "winclpt");
session.setAttribute("myName", "chke");
return "session";
}

上面的代码将Model中的name参数保存到了session中(如果Model中没有name参数,而session中存在一个name参数,那么SessionAttribute会讲这个参数塞进Model中)

SessionAttribute有两个参数:

  String[] value:要保存到session中的参数名称

  Class[] typtes:要保存的参数的类型,和value中顺序要对应上

所以可以这样写:@SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”})

原理理解:它的做法大概可以理解为将Model中的被注解的attrName属性保存在一个SessionAttributesHandler中,在每个RequestMapping的方法执行后,这个SessionAttributesHandler都会将它自己管理的“属性”从Model中写入到真正的HttpSession;同样,在每个RequestMapping的方法执行前,SessionAttributesHandler会将HttpSession中的被@SessionAttributes注解的属性写入到新的Model中。

  如果想删除session中共享的参数,可以通过SessionStatus.setComplete(),这句只会删除通过@SessionAttribute保存到session中的参数

最新文章

  1. Web Mercator 公开的小秘密
  2. 打造Linux三流娱乐环境,二流办公环境,一流Java开发环境
  3. HTML基础(三)——css样式表
  4. 对数据库触发器new和old的理解
  5. apache https配置步骤
  6. 如何实现多个div水平均匀排列且量两端贴壁
  7. 查一下 excel中某一列是否有重复
  8. Unrecognized VM 'MaxMetaspaceSize
  9. NSUInteger和NSInteger和int
  10. jQuery extend方法介绍
  11. MYSQL SET类型字段的SQL查询某个字段保函某个值的查询
  12. SQL操作语句中的注意点
  13. Linux系统优化
  14. 机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho
  15. CAN通信帧ID如何设定?
  16. 微信, qq 支付宝 等相关开发 资源 记录
  17. (后端)Sql Server日期查询-SQL查询今天、昨天、7天内、30天(转)
  18. js事件探秘
  19. ncnn框架
  20. linux获取内存、cpu、负载、网口流量、磁盘信息

热门文章

  1. go调度: 第一部分-OS调度(操作系统调度)
  2. Linux操作系统启动故障排错之/boot目录被删除恢复案例
  3. 第二次作业之——AchaoCalculator
  4. scrapy框架爬取智联招聘网站上深圳地区python岗位信息。
  5. HRBUST 2040 二叉树的遍历
  6. 【Selenium-WebDriver实战篇】selenium之使用Tess4J进行验证码图片识别内容
  7. LeetCode 1105. Filling Bookcase Shelves
  8. 解决<c:if>无else的问题
  9. js 符号转换 html代码
  10. B/S结构与C/S结构测试区别