文档章节

关于springmvc 的 RedirectAttributes及分布式的redirect参数传递

jimmywu911
 jimmywu911
发布于 2017/09/06 15:51
字数 474
阅读 33
收藏 0

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

1、edirectAttributes.addAttributie("prama1",value1);

     return:"redirect:/path/list"

     这种方式相当于在url中增加参数,浏览器中可以看到参数内容

2、redirectAttributes.addFlashAttributie("prama1",value1);

     return:"redirect:/path/list"

       这种方式在url中不暴露参数内容,而在重定向的页面内可以获取到参数内容,其本质是通过session来实现。在跳转到的view上可以使用el表达式等进行获取,在controller里可以用@ModelAttribute获取。
对于第二种方式,在单服务器部署时是没有问题的,但在分布式部署时问题就出现了。前面说到
addFlashAttributie实际是使用session来实现的值传递,如果使用分布式部署,并且没有做session同步的情况下,很可能redirect的请求会打到不同的服务器上,这时参数值就丢失了。


如何解决问题?
首先,使用方式1去传值,这样参数在url里,目标地址可以在request中获取参数做任意操作。但也要注意一点,这种方式存在两个问题 1)参数暴露在url里,安全性很差;2)由于参数在url里,用户再次刷新时也同样会包含这些参数,这里如果希望的效果是只第一次redirect时使用这些参数(如显示上一操作的结果信息)就出现了不想看到的现象。
其次,使用cookie去传值,在redirect之前奖参数写入cookie,再在rediect后读取cookie值,使用后将cookie删除。这种方式没有上面的两个问题,当然,这种方式也就和RedirectAttributes没有关系了。

© 著作权归作者所有

共有 人打赏支持
jimmywu911
粉丝 5
博文 8
码字总数 8529
作品 0
昌平
高级程序员
SpringMVC——redirect重定向跳转传值

spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。 首先先来介绍一下不带参数的重定向: 我在后台一个c...

引鸩怼孑
2015/04/10
0
0
SpringMVC从Controller跳转到另一个Controller

需求背景 需求:spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。 本来以为挺简单的一件事情,并且个人...

嘻哈开发者
2015/04/25
0
1
《Spring实战》读书笔记--SpringMVC之forward与redirect

1.forward与redirect介绍 1.1 redirect 重定向,服务器收到请求后发送一个状态码给客户端,让客户端再重新请求,并且第一次请求中Request里的数据消失。所以redirect相当于客户端向服务器发出...

javaer
01/12
0
0
Spring Mvc 请求转发和重定向

spring mvc controller间跳转 重定向 传参 需求背景 本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料,一堆都不...

小风89
2015/09/29
56
0
spring mvc 请求转发和重定向

spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架controller间跳转,需重定向。有几种情...

Carl_
2015/09/21
62.2K
1

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
3
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部