100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > SpringMVC源代码学习外传(二)如何在重定向时传递参数FlashMap

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

时间:2020-01-25 22:39:57

相关推荐

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();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。