解决SpringMVC重定向参数无法携带问题

场景

重定向时请求参数会丢失,我们往往需要重新携带请求参数,我们可以进⾏⼿动参数拼接如下:

return "redirect:handle01?name=" + name;
  • 但是上述拼接参数的⽅法属于get请求,携带参数⻓度有限制,参数安全性也不⾼,此时,我们可以使用SpringMVC提供的flash属性机制
  • 向上下问中添加flash属性,框架会在session中记录该属性值
  • 当跳转到页⾯之后框架会⾃动删除flash属性,不需要⼿动删除,通过这种⽅式进⾏重定向参数传递,参数⻓度和安全性都得到了保障,如下:

下面场景,访问handleRedirect后,我们重定向到其他请求,需要携带name参数。

  @RequestMapping("/handleRedirect")
public String handRedirect(String name, RedirectAttributes redirectAttributes) {
// return "redirect:handle01?name"+name; // 这种方式实现 缺点容易过长,不安全等
redirectAttributes.addAttribute("name", name);
// addFlashAttribute⽅法设置了⼀个flash类型属性,该属性会被暂存到session中,在跳转到⻚⾯之后该属性销毁
return "redirect:handle01";
} /**
* @return 返回模型和视图
*/
@RequestMapping("handle01")
public ModelAndView handle01(@ModelAttribute("name") String name) {
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name", name);
modelAndView.addObject("data", date);
modelAndView.setViewName("/success");
return modelAndView;
}

浏览器地址栏: http://localhost:8080/demo/handleRedirect?name=张三

观察测试结果

最新文章

  1. iOS: 为画板App增加 Undo/Redo(撤销/重做)操作
  2. thinkphp 杂项(3.2.3)
  3. Javascript学习笔记:3种递归函数中调用自身的写法
  4. 将List转换为二维数组(result)
  5. quad 和 plane 区别是什么?
  6. electron package can not find module xml2json
  7. 二分图最大权最小权完美匹配模板KM
  8. 基本的文件 I/O
  9. log4j使用教程
  10. windows渗透被人忽视的一些小命令
  11. erlang使用leveldb
  12. wpa_supplicant 和 802.11g WPA 认证的配置
  13. 搭建ganglia集群而且监视hadoop CDH4.6
  14. [转]Numpy使用MKL库提升计算性能
  15. jquery的ajax与spring mvc对接注意事项
  16. class中的东西和继承、多态的概念
  17. 【转载】Google 程序员消灭 Bug 的 5 大法宝!
  18. Dapper查询返回Datatable
  19. python random 模块
  20. 表驱动方法(Table-Driven Methods)

热门文章

  1. SecureCRT登录centos日常操作
  2. C++面向对象编程之转换函数、explicit、one-argument
  3. C#实现登录某web进而获取其token数据
  4. 这些不知道,别说你熟悉 Spring
  5. MySQL精华笔记
  6. Centos7使用sendEmail-v1.56发送邮件
  7. SLAM中的内外点
  8. 系统整理K8S的配置管理实战-建议收藏系列
  9. JVM学习笔记——内存模型篇
  10. 词向量word2vec(图学习参考资料)