当前位置: 首页 > 编程笔记 >

SpringBoot中重定向RedirectAttributes的用法

夹谷英杰
2023-05-05

RedirectAttribute:可以在Controller中return时设置跳转方式为重定向(return “redirect:要跳转的视图”),也可以在Controller中传参时传入一个RedirectAttributes类型的值,再配合flush给request中的存入数据,并且在重定向时候避免数据丢失。

RedirectAttributesSpring mvc 3.1版本之出来的一个功能,专门用于重定向之后还能带参数跳转的的工具类

有两种带参的方式:

第一种:

redirectAttributes.addAttributie("param",value); 这种方法相当于在重定向链接地址追加传递的参数,例如:

redirectAttributes.addAttributie("prama1",value1);
redirectAttributes.addAttributie("prama2",value2);
return:"redirect:/path/list"


以上重定向的方法等同于 return:"redirect:/path/list?param1=value1&param2=value2 " ,注意这种方法直接将传递的参数暴露在链接地址上,非常的不安全,慎用


第二种:

redirectAttributes.addFlashAttributie("param",value);  这种方法是隐藏了参数,链接地址上不直接暴露,但是能且只能在重定向的 “页面” 获取param参数值。其原理就是放到session中,session在跳到页面后马上移除对象。

如果是重定向一个controller中是获取不到该param属性值的。  除非在controller中用(@RequestPrama(value = "param")String param)注解,采用传参的方式。

页面获值例如:

redirectAttributes.addFlashAttributie("prama1",value1);
redirectAttributes.addFlashAttributie("prama2",value2);
return:"redirect:/path/list.jsp"


在以上参数均可在list.jsp页面使用EL表达式获取到参数值${param}

controller获得redirectAttributes重定向的值例如

redirectAttributes.addFlashAttributie("prama1",value1);
redirectAttributes.addFlashAttributie("prama2",value2);
return:"redirect:/path/list/"
@RequestMapping("list")
public List<Student> list(@RequestPrama(value = "prama1")String  prama1,
   @RequestPrama(value = "prama2")String  prama2,...
){
    //TODO
    //your code
}


通过在controller中的list方法体中可以获取到参数值。

 类似资料:
  • 在Spring MVC中, 当返回值包含重定向前缀时,viewResolver将其识别为需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL。客户端将向该重定向URL发送一个新请求。 我们可以编写如下处理程序方法来处理重定向: 现在我们可以像这样在中访问这个重定向属性 通常我们可以在方法中访问这个重定向属性,但是当我在返回语句中指定一个URL作为参数化url时,如下所示 我无法访问重定向属

  • 问题内容: 我正在尝试通过springboot Web应用程序提供Angular2应用程序。我已经找到了许多非常简单的方法示例: https://spring.io/blog/2015/01/12/spring-and-angular-js-a-secure-single-page- application#using-spring-boot-cli https://github.com/zoua

  • 我犯了这个错误 语法错误:意外重定向 行中: 我如何在Ubuntu中运行它?

  • 问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通

  • 巧妙地使用I/O重定向可以解析和粘合命令输出的各个片断 (参考 例子 11-7). 这样就可以产生报告性的文件和日志文件. 例子 16-12. 事件记录 1 #!/bin/bash 2 # logevents.sh, Stephane Chazelas编写. 3 4 # 把事件记录在一个文件. 5 # 必须以root身份运行 (这样才有权限存取 /var/log).

  • 我想知道301和307重定向之间的区别。 我希望通过自制url重定向器生成反向链接,我希望任何“链接果汁”或“页面排名果汁”都能直接从原始主页流向最终url,但如果其中一个原始主页出现问题,我希望能够通过删除该特定页面的重定向链接来关闭该链接。有道理? 我的理解是,301是永久性的,这意味着谷歌将看到301并更新其缓存的URL作为最终目的地,而不管我以后是否取消重定向。 如果我使用307,它将不会