以下内容基于书:《看透SpringMVC-源代码分析与实践》
基本照搬。。。用于自己查阅备忘。
加上外传关键字的是讨论一些SpringMVC的特定类的使用方法
非外传的是对启动流程/请求处理流程,我们可以看作主线剧情。

什么是FlashMap?

flashmap的作用是在redirect中传递参数。大家都知道转发 request是不变的,重定向会生成新的request,那传递参数就不能直接用request进行传递。

spring提供了相应的方法解决这个问题,两种方法:

    //1.得到一个FlashMap,然后直接调用put方法,如:flashmap.put("name","xialu");//2.在handler的方法参数中传入RedirectAttributes类型的变量,这个用起来简便,但是有局限性。如:@RequestMapping("test")public String test(RedirectAttributes attr){attr.addAttribute("name","xialu");         //这里传入的参数会出现在重定向后的url中,相当于get方式。attr.addFlashAttribute("name","xialu");    //这里传入的参数会用flashmap保存return "redirect:index.do";}

获得flashmap的两种方式,这里引用的request是该次请求的HttpServletRequest:

    //1.RequestContextUtils是spring提供的类,其实做法和第二条一模一样了。FlashMap flashmap = RequestContextUtils.getOutputFlashMap(request);//2.FlashMap flashmap = ((FlashMap)(request.getAttribute(DispatcherServlet.OUTPUT_FLASH_MAP_ATTRIBUTE)));

获得HttpServletRequest的两种方法:

    //1.直接从Controller的方法参数中获取@RequestMapping("test")public void test(HttpServletRequest request){}//2.通用的方法,在哪里都可以调用HttpServletRequest request = ((ServletRequestAttributes)(RequestContextHolder.getRequestAttributes())).getRequest();

SpringMVC源代码学习外传(二)如何在重定向时传递参数FlashMap相关推荐

  1. SpringMVC源代码学习外传(三)RequestCondition

    以下内容基于书:<看透SpringMVC-源代码分析与实践> 基本照搬...用于自己查阅备忘.加上外传关键字的是讨论一些SpringMVC的特定类的使用方法,非外传的是对启动流程/请求处理 ...

  2. SpringMVC源代码学习外传(一)xml命名空间的解析NamespaceHandler

    以下内容基于书:<看透SpringMVC-源代码分析与实践> 基本照搬...用于自己查阅备忘. 加上外传关键字的是讨论一些SpringMVC的特定类的使用方法, 非外传的是对启动流程/请求 ...

  3. BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(二):程序运行参数的获取 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(二):程序运行参数的获取 发信站: 水木社区 ...

  4. NASM学习(二)——从命令行获取参数

    NASM学习(二)--从命令行获取参数 学习汇编的目的是增强自己对硬件体系的熟悉与编译.链接等等阶段的熟悉 上文我们已经学会了怎么使用NASM来打印HELLO,WORLD了,总结一下,主要是使用系统调 ...

  5. swagger学习日记1 swagger测试接口时传入参数的类型问题

    问题现象: 今天在学习swagger做接口api说明的时候,出现了一个一直解决不了的问题,而且网上搜了很久,都找不到任何相似的问题和解决方法: 当用swagger测试一个需要传入(Integer数据类 ...

  6. python中redirect如何传值_flask的重定向(redirect)传递参数的方法

    flask中的重定向redirect方法常常被用来跳转页面,那redirect在跳转页面的同时能不能传递我们下一个页面需要的参数呢? 带着这个问题我看了redirect()的源码,如下: 1 def ...

  7. SpringMVC源代码学习(一)从HTttpServletBean到DispatcherServlet

    以下内容基于书:<看透SpringMVC-源代码分析与实践>基本照搬...用于自己查阅备忘. 观察DispatcherServlet继承树    做Java web的应该都知道Generi ...

  8. Java SpringMVC框架学习(二)httpServeltRequest和Model传值的区别

    HttpServletRequest 为什么大多程序在controller中给jsp传值时使用model.addAttribute()而不使用httpServeletRequest.setAttrib ...

  9. 前端学习(2336):angular之传递参数

最新文章

  1. 今年两会大火的新基建,平均企业月薪1.63万 | 2020新基建中高端人才市场就业吸引力报告...
  2. shell脚本 - 快速到达目录
  3. 微服务业务体系内对复用的深度探讨
  4. WebStorm 预览时把浏览器地址localhost 改成IP
  5. Dubbo 新增本地 IDE 插件,快速创建样例工程
  6. linux timespec 链接库,Linux内核 timespec_sub()
  7. c语言fread malloc,流操作之读写(fread、fwrite、fopen、malloc)
  8. Spring : ListableBeanFactory
  9. linux分区方案 arv,Linux运维 第三阶段 (九)NFS
  10. Python实现答题程序
  11. PHP帮管客CRM系统源码去域名授权v2.4.4版
  12. windows RDP远程连接卡死问题
  13. Shapely的安装
  14. 新人学习java导论
  15. 电机学Matlab仿真代码
  16. MySQL根据某一个字段合并重复列
  17. win7设置多用户登陆和修改3389端口、win10设置多用户登陆和修改3389端口
  18. poe交换机供电方法
  19. 杰理zHiUSB设备功能【篇】
  20. 81、前后端等上下游岗位配合的思考和参考工作方法,望文知意,约定优于沟通

热门文章

  1. 人工智能智能决策支持系统:技术、特点和挑战
  2. Sitecore 8.2 扩展体验分析报告
  3. 简信CRM-----客户关系管理软件
  4. 在线Excel转SQL工具
  5. 华为鸿蒙物联网系统,华为鸿蒙!真正的物联网承载系统 一看就懂
  6. Cesium 地图遮罩 局部突出
  7. 完全解析Rsync命令的17个备份选项
  8. 沁恒USB转串口主要替换FT232/230系列
  9. 在微型计算机中 cmos属于,雨课堂: 在微型计算机中,CMOS属于()
  10. Google Python代码风格指南