spring跨重定向传递数据
spring跨重定向传递数据
为何要重定向?
作用之一:防止表单重复提交
如何重定向?
// 在控制器方法返回的视图名称中,以redirect:开头的String不是用来查找视图的,而是用来指导浏览器进行重定向的路径
return "redirect:/spitter/" + spitter.getUsername();
重定向丢数据

显然,对于重定向来说,模型并不能用来传递数据。
重定向如何传递数据?
- 使用URL模板以路径变量和/或查询参数的形式传递数据;
- 通过flash属性发送数据;
通过URL模板进行重定向
通过连接String的方式:
@RequestMapping(value="/register", method=RequestMethod.POST)
public String processRegistration( @RequestPart("profilePicture") MultipartFile profilePicture, @Valid Spitter spitter,
Errors errors,HttpServletRequest http) throws Exception{
profilePicture.transferTo(new File("/data/spittr/" + profilePicture.getOriginalFilename()));
if(errors.hasErrors()) {
return "registerForm";
}
spitterRepository.save(spitter);
return "redirect:/spitter/" + spitter.getUsername();
}
// 当构建url或sql查询语句的时候,使用String拼接不安全
模板方式:
@RequestMapping("/tiles")
public String hello (Model model)
{
model.addAttribute("name", "yangdong");
model.addAttribute("sex", "men");
model.addAttribute("age", "18");
return "redirect:/test/{name}";
}
因为模型中的sex和age属性没有匹配重定向URL中的任何占位符,所以它会自动以查询参数的形式附加到重定向URL上。
结果得到的重定向URL路径将会是: test/yangdong?sex=men&age=18
小结:通过路径变量和查询参数的形式跨重定向传递数据是很简单直接的形式,但是它只能用来发送简单的值,例如String和数字的值。
使用flash属性
有个方案是将对象放到会话(session)中。会话能够长期存在,并且能够跨多个请求。所以我们能在重定向发送之前将对象放到会话中,并在重定向后,从会话中将其取出。当然,我们还要负责在重定向后再会话中将其清理掉。 实际上,Spring也认为将跨重定向存活的数据放到会话中是一个很不错的选择。但是,Spring认为我们并不需要管理这些数据,相反,Spring提供了将数据发送为flash属性的功能。按照定义,flash属性会一直携带这些数据直到下一次请求,然后才会消失。
@RequestMapping(value="/register", method=RequestMethod.POST)
public String processRegistration( @RequestPart("profilePicture") MultipartFile profilePicture, @Valid Spitter spitter,Errors errors,Model model) throws Exception{
profilePicture.transferTo(new File("/data/spittr/" +profilePicture.getOriginalFilename()));
if(errors.hasErrors())
{
return "registerForm";
}
spitterRepository.save(spitter);
model.addAttribute("username", spitter.getUsername());
model.addAttribute("password",spitter.getPassword());
return "redirect:/spitter/{username}";
}

spring跨重定向传递数据的更多相关文章
- Spring 跨重定向请求传递数据
在处理完POST请求后, 通常来讲一个最佳实践就是执行一下重定向.除了其他的一些因素外,这样做能够防止用户点击浏览器的刷新按钮或后退箭头时,客户端重新执行危险的POST请求. 在控制器方法返回的视图名 ...
- SeGue 多控制器跨界面传递数据原理
多控制器跨界面传递数据原理
- Spring MVC异常处理 和 重定向传递数据
1.异常处理介绍 Spring在web项目中,如果在请求处理时出现异常,那输出会是Servlet响应.这时异常需要以某种方式转换为响应. Spring将异常转换为响应的方式: a.特定的Spring异 ...
- MVC 5使用TempData Object跨视图传递数据
经过一系列显示数据的练习:<MVC 5使用ViewData(对象)显示数据>http://www.cnblogs.com/insus/p/3377178.html<MVC 5使用Vi ...
- MVC 5使用TempData(对象)跨视图传递数据
在控制器写好TempData:然后在Index.cshtml写一个链接,为了是让用户点击这个链接,能链至PageA()这个Action至. @Html.ActionLink("Show to ...
- eNSP下配置Trunk接口实现跨交换机传递数据
当Trunk端口发送数据帧的时候,当所发送帧的VLAN ID与端口的PVID不同是,检查是否允许该VLAN通过,若允许的话,直接透传,不允许就直接丢弃:当该帧的VLAN ID与端口的PVID相同时,则 ...
- Android AIDL Service 跨进程传递复杂数据
黑夜 黑夜给了我黑色的眼睛,我却用它寻找光明~ 传值方式 AIDL是同意跨进程传递值的,一般来说有三种方式: - 广播:这样的算是比較常见的一种方式了,传递小数据不错 - 文件:这个是保存到文件里.然 ...
- php跨服务器传递对象
最近因为研究跨域名,跨服务器的问题,所以无聊,就想到了一个跨服务器传递对象的问题. 想要跨服务器传递数据,那么就要使用到get或者post提交. 我这里的方法有点复杂,但是因为平时工作时,有封装相应的 ...
- Spring之跨重定向请求传递数据
摘要 在开发场景中,大部分数据都是使用请求转发(forward)进行传递,而使用重定向(redirect)传递数据可能比较少. 那么问题来了:请求中的数据生命周期存活时间只在一个请求转发(reques ...
随机推荐
- Go语言 - 函数 | 作用域 | 匿名函数 | 闭包 | 内置函数
函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 介绍 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于“一等公民”. 函数可以赋值给变量 函数 ...
- web api 2.0 上传文件超过4M时,出现404错误
客户端代码 string path = "C:\\text.txt"; WebClient client = new WebClient(); Uri _address = new ...
- Mycat 全局系列号(转载)
概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server.xml < ...
- 每个开发人员必须知道PDB文件知识
大多数开发人员都意识到PDB文件有助于您进行调试,但仅此而已.如果你不知道PDB文件是怎么回事,不要觉得很糟糕,因为虽然有文档在那里,但它分散在周围,而且大部分是为编译器和调试器编写器准备的.虽然编写 ...
- windbg命令行选项
我们不仅可以通过GUI的方式使用Windbg,还可以通过命令行的方式使用它,且在有些需求和使用场景下,只能使用命令行模式 windbg命令行使用以下语法: windbg [ -server Serv ...
- chmod/chown/chgrp/chattr
权限组合其实就是二进制的组合 注意,用户只能修改属于自己的文件 仅管理员可以修改文件的数组和属主 chmod 三种使用方法 文件的特殊权限 SUID SGID Sticky chowm 修改文件,目录 ...
- 24-ESP8266 SDK开发基础入门篇--Android TCP客户端.控制 Wi-Fi输出PWM的占空比,调节LED亮度
https://www.cnblogs.com/yangfengwu/p/11204436.html 刚才有人说需要点鸡汤.... 我想想哈;我还没问关于哪方面的鸡汤呢!!! 我所一直走的路线 第一: ...
- 50、Spark Streaming实时wordcount程序开发
一.java版本 package cn.spark.study.streaming; import java.util.Arrays; import org.apache.spark.SparkCon ...
- Alpha冲刺(5/6)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 准备"Alpha事后诸葛亮" 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们 ...
- 使用python3完成人脸识别
原文地址:https://www.jb51.net/article/160197.htm 第一种: # -*- coding:utf-8 -*- import cv2 as cv import num ...