springmvc处理器之间的重定向

  在开发中通常会有这样的需求:我们向后端发送一个请求如对数据的变更,当对数据库操作完成之后,后端就需要return回页面,而在return回页面之前可能还需要对数据进行再查询或其他操作,就需要在处理器之间进行跳转了(跳转到另一个查询或操作数据的处理器)

  自己遇到个小问题,直接return “redirect:/处理器映射?参数名”+参数值; 直接写在了url上发现跳转过去的控制器并不能直接得到数据(另一个处理器上的参数并没有加任何注解),拿到的参数是null值。

  实际上springmvc框架为我们提供了RedirectAttributes类,可以使用方法redirectAttributes.addAttribute(“参数名”, 参数值); 这种方式也相当于在url路径上带参了,安全方面并不能有好的保障。但是这种方式对于上面的错误来说,是可以完美解决的,另一个控制器可以拿到参数值。

  对于参数安全方面而言,同样是RedirectAttributes类,它为我们提供了addFlashAttribute()方法,这个方法的原理是将数据放在session中,跳转之后立刻销毁session中的这个对象。另一个处理器中可以通过getSession()或者直接形参加注解@ModelAttribute(“session名”)都可以获取这个参数值。

posted @ 2018-06-11 09:23  Ericheel  阅读(148)  评论(0编辑  收藏  举报