执行完post请求后,通常来讲一个最佳实践就是执行重定向。重定向将丢弃原始请求数据,原始请求中的模型数据和请求都会消亡。可以有效避免用户浏览器刷新或者后退等操作,直接间接地重复执行已经完成的post请求。
在控制方法中返回的视图名称中,在String前使用"redirect:"前缀,那么这个String就不是来查找视图的,而是浏览器进行重定向的路径,相当于重新发出请求。
重定向通常相当于从一个controller到另一个controller。
(1)使用URL模板以路径变量和查询参数的形式传递数据(一些简单的数据)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @GetMapping ( "/home/index" ) public String index(Model model){ Meinv meinv = new Meinv( "gaoxing" , 22 ); model.addAttribute( "lastName" ,meinv.getLastName()); model.addAttribute( "age" ,meinv.getAge()); return "redirect:/home/details/{lastName}" ; } @GetMapping ( "/home/details/{lastName}" ) public String details( @PathVariable String lastName, @RequestParam Integer age){ System.out.println(lastName); System.out.println(age); return "home" ; } |
(2)通过flash属性发送数据(对象等复杂数据)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @GetMapping ( "/home/index" ) public String index(RedirectAttributes model){ Meinv meinv = new Meinv( "gaoxing" , 22 ); model.addAttribute( "lastName" ,meinv.getLastName()); model.addFlashAttribute( "meinv" ,meinv); return "redirect:/home/details/{lastName}" ; } @GetMapping ( "/home/details/{lastName}" ) public String details( @PathVariable String lastName, Model model){ Meinv meinv = null ; if (model.containsAttribute( "meinv" )){ meinv = (Meinv) model.asMap().get( "meinv" ); } System.out.println(meinv); return "home" ; } |
到此这篇关于SpringMVC 跨重定向请求传递数据的方法实现的文章就介绍到这了,更多相关SpringMVC 跨重定向传递数据内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!
- 本文固定链接: https://zxbcw.cn/post/187982/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)