基于重定向RedirectAttributes的用法解析

 更新时间:2021年12月17日 09:25:30   作者:彭松  
这篇文章主要介绍了基于重定向RedirectAttributes的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

重定向RedirectAttributes的用法

刚才做项目,遇到了redirectAttributes使用的问题,上网找了找,看到一篇写的很不错的博客,解决我对于RedirectAttributes的困惑,也给大家推荐下。

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

它有两种带参的方式

第一种:

redirectAttributes.addAttributie("prama",value); 这种方法相当于在重定向链接地址追加传递的参数,例如:
redirectAttributes.addAttributie("prama1",value1);
redirectAttributes.addAttributie("prama2",value2);
return:"redirect:/path/list" 

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

第二种:

redirectAttributes.addFlashAttributie("prama",value); 

这种方法是隐藏了参数,链接地址上不直接暴露,但是能且只能在重定向的 “页面” 获取prama参数值。

其原理就是放到session中,session在跳到页面后马上移除对象。如果是重定向一个controller中是获取不到该prama属性值的。除非在controller中用(@RequestPrama(value = "prama")String prama)注解,采用传参的方式。

页面获值

例如:

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

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

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方法体中可以获取到参数值。

RedirectAttributes详解

RedirectAttributes 的两个方式的获取总结:

1、addFlashAttribute

  @RequestMapping (value= "hello" )
     public  String test(RedirectAttributes ra){
         ra.addFlashAttribute( "test" ,  "test" );
         return  "redirect:/test" ;
     }
     @RequestMapping (value= "test" )
     public  String test( @ModelAttribute ( "test" )String test){
         System.out.println(test);
         return  "redirect:/hello" ;
     }

2、addAttribute

@RequestMapping (value= "hello" )
public  String test(RedirectAttributes ra){
     ra.addAttribute( "test" ,  "test" );
     return  "redirect:/test" ;
}
@RequestMapping (value= "test" )
public  String test(HttpServletRequest request ){
     String test = request.getParameter( "test" );
     
     System.out.println(test);
     return  "redirect:/hello" ;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java内存溢出案例模拟和原理分析过程

    Java内存溢出案例模拟和原理分析过程

    这篇文章主要介绍了Java内存溢出案例模拟和原理分析过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java动态数组Arraylist存放自定义数据类型方式

    Java动态数组Arraylist存放自定义数据类型方式

    这篇文章主要介绍了Java动态数组Arraylist存放自定义数据类型方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java字符串常量池示例详解

    Java字符串常量池示例详解

    作为最基础的引用数据类型,Java设计者为 String 提供了字符串常量池以提高其性能,下面这篇文章主要给大家介绍了关于Java字符串常量池的相关资料,需要的朋友可以参考下
    2021-08-08
  • Java中的三种标准注解和四种元注解说明

    Java中的三种标准注解和四种元注解说明

    这篇文章主要介绍了Java中的三种标准注解和四种元注解说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java中的逻辑结构详解

    Java中的逻辑结构详解

    这篇文章主要介绍了Java中的逻辑结构详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 详解Java ArrayList类

    详解Java ArrayList类

    这篇文章主要介绍了Java ArrayList类的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • JAVA判断两个时间之间的差

    JAVA判断两个时间之间的差

    经常会遇到需要判断两个时间之间的差异的情况,本文主要介绍了JAVA计算两个时间之间的差,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Java之JsonArray用法讲解

    Java之JsonArray用法讲解

    这篇文章主要介绍了Java之JsonArray用法讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • debug模式迟迟不能启动问题及解决

    debug模式迟迟不能启动问题及解决

    在使用Debug模式进行代码测试时,由于设置了过多的断点,导致程序加载缓慢甚至无法启动,解决此问题的方法是取消不必要的断点,通过IDE的断点管理功能,检查并移除问题断点,从而优化调试效率,分享此经验希望能帮助遇到相同问题的开发者
    2022-11-11
  • 关于HashMap 并发时会引起死循环的问题解析

    关于HashMap 并发时会引起死循环的问题解析

    JDK1.8之前采用头插,即在链表结构上每次都把数据放在链表头部。JDK1.8采用尾插方法,很多朋友在学习Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时不知道究其原因,今天小编通过本文给大家介绍下HashMap 并发死循环问题,一起看看吧
    2021-05-05

最新评论