SpringMVC源代码学习外传(二)如何在重定向时传递参数FlashMap
以下内容基于书:《看透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相关推荐
- SpringMVC源代码学习外传(三)RequestCondition
以下内容基于书:<看透SpringMVC-源代码分析与实践> 基本照搬...用于自己查阅备忘.加上外传关键字的是讨论一些SpringMVC的特定类的使用方法,非外传的是对启动流程/请求处理 ...
- SpringMVC源代码学习外传(一)xml命名空间的解析NamespaceHandler
以下内容基于书:<看透SpringMVC-源代码分析与实践> 基本照搬...用于自己查阅备忘. 加上外传关键字的是讨论一些SpringMVC的特定类的使用方法, 非外传的是对启动流程/请求 ...
- BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(二):程序运行参数的获取 发信人: wolfenstein (NeverSayNever), 个人文集 标 题: BT源代码学习心得(二):程序运行参数的获取 发信站: 水木社区 ...
- NASM学习(二)——从命令行获取参数
NASM学习(二)--从命令行获取参数 学习汇编的目的是增强自己对硬件体系的熟悉与编译.链接等等阶段的熟悉 上文我们已经学会了怎么使用NASM来打印HELLO,WORLD了,总结一下,主要是使用系统调 ...
- swagger学习日记1 swagger测试接口时传入参数的类型问题
问题现象: 今天在学习swagger做接口api说明的时候,出现了一个一直解决不了的问题,而且网上搜了很久,都找不到任何相似的问题和解决方法: 当用swagger测试一个需要传入(Integer数据类 ...
- python中redirect如何传值_flask的重定向(redirect)传递参数的方法
flask中的重定向redirect方法常常被用来跳转页面,那redirect在跳转页面的同时能不能传递我们下一个页面需要的参数呢? 带着这个问题我看了redirect()的源码,如下: 1 def ...
- SpringMVC源代码学习(一)从HTttpServletBean到DispatcherServlet
以下内容基于书:<看透SpringMVC-源代码分析与实践>基本照搬...用于自己查阅备忘. 观察DispatcherServlet继承树 做Java web的应该都知道Generi ...
- Java SpringMVC框架学习(二)httpServeltRequest和Model传值的区别
HttpServletRequest 为什么大多程序在controller中给jsp传值时使用model.addAttribute()而不使用httpServeletRequest.setAttrib ...
- 前端学习(2336):angular之传递参数
最新文章
- 今年两会大火的新基建,平均企业月薪1.63万 | 2020新基建中高端人才市场就业吸引力报告...
- shell脚本 - 快速到达目录
- 微服务业务体系内对复用的深度探讨
- WebStorm 预览时把浏览器地址localhost 改成IP
- Dubbo 新增本地 IDE 插件,快速创建样例工程
- linux timespec 链接库,Linux内核 timespec_sub()
- c语言fread malloc,流操作之读写(fread、fwrite、fopen、malloc)
- Spring : ListableBeanFactory
- linux分区方案 arv,Linux运维 第三阶段 (九)NFS
- Python实现答题程序
- PHP帮管客CRM系统源码去域名授权v2.4.4版
- windows RDP远程连接卡死问题
- Shapely的安装
- 新人学习java导论
- 电机学Matlab仿真代码
- MySQL根据某一个字段合并重复列
- win7设置多用户登陆和修改3389端口、win10设置多用户登陆和修改3389端口
- poe交换机供电方法
- 杰理zHiUSB设备功能【篇】
- 81、前后端等上下游岗位配合的思考和参考工作方法,望文知意,约定优于沟通