首页 > 作文

SpringMVC 重新定向redirect请求中携带数据方式

更新时间:2023-04-04 03:34:54 阅读: 评论:0

目录
springmvc 重新定向redirect请求中携带数据使用url模版重定向使用flash属性springmvc 几种重定向携带数据方法1.拼接字符串2.采用redirectattribute来传参数3.redirectattribute—–addflashattribute()的用法

springmvc 重新定向redirect请求中携带数据

在控制器方法返回的视图名称中使用了redirect:前缀,这时返回的string不是用来寻找视图,而是浏览器进行跳转的路径:
return “redirect:/spitter/” + spitter.geturname();

当一个控制器返回的是公司元旦晚会主持词一个redirect时,原来的request会终止,并且会开启一个新的http请求。原来request中所有的model数据都会清空。新的request不会有任何的model数据,如图:

现在不能再redirect时使用model来传递数据了。但是还有其他方法用来从重定向的方法中获取数据:

将数据转换为路学校消防演练径参数或者查询参数在flash属性中发送数据首先来看一下spring如何在路径参数或者查询参数中传递数据。

使用url模版重定向

@requestmapping(value="/register", method=post)public string processregistration(spitter spitter, model model) {    spitterrepository.save(spitter);    model.addattribute("urname", spitter.geturname());    return "redirect:/spitter/{urname}";}@requestmapping(value = "/{urname}", method = requestmethod.get)    public string showspitterprofile(@pathvariable string urname, model model) {        system.out.println("showspitterprofile");        spitter spitter = spittlerepository.findbyurname(urname);        model.addattribute(spitter);        return "profile";    }

model中其他的原始值也会作为查询参数添加到重定向url中。例如,除了urname,model同时也包括新建的spitter对象的id属性:

@requestmapping(value="/register", method=post)public string processregistration(spitter spitter, model model) {    spitterrepository.save(spitter);    model.addattribute("urname", spitter.geturname());    model.addattribute("spitterid", spitter.getid());    return "redirect:/spitter/{urname}";}

但是由于model中的spitterid属性并没有映射到url中的占位符,它会自动作为查询参数。

如果urname是habuma,spitterid是42,那么返回的重定向路径将是/spitter/habuma?spitterid=42。

使用flash属性

spring提供了通过redirectattributes来设置flash属性,redirectattributes作为model的子接口,新增了一些方法用来设置flash属性。

@requestmapping(value="/register", method=post)public string pro马蜂菜cessregistration(spitter spitter, redirectattributes model) {    spitterrepository.save(spitter);    model.addattribute("urname", spitter.geturname());    model.addflashattribute("spitter", spitter);    return "redirect:/spitter/{urname}";}

在重定向执行之前,所有的flash属性都会复制到会话中。在重定向后,存在会话中的flash属性会被取出,并从会话转移到模型之中。处理重定向的方法就能从模型中访问spitter对象了,就像获取其他的模型对象一样

@requestmapping(value = "/{urname}", method = requestmethod.get)public string showspitterprofile(@pathvariable("urname") string urname, model model) {    if (!model.containsattribute("spitter")) {        spitter spitter = spitterrepository.findbyurname(urname);        model.addattribute(spitter);    }    return "profile";}

showspitterprofile()方法所做的第一件事就是检查是否存有key为spitter的model属性。如果模型中包含spitter属性,那就什么都不用做了。这里面包含的spitter对象将会传递到视图中进行渲染。但是如果模型中不包含spitter属性的话,那么showspitterprofile()将会从repository中查找spitter,并将其存放到模型中。

重新定向显示数据

........<%@ taglib uri="/d/file/titlepic/" prefix="c" %>........urname:<c:out value="${spitter.urname}"/><br/>firstname:<c:out value="${spitter.firstname}"/>lastname: <c:out value="${spitter.lastname}"/><br/>email:<c:out value="${spitter.email}"/>....

springmvc 几种重定向携带数据方法

1.拼接字符串

return "redirect:/page/cond?param1=lay&param2=lay2";

2.采用redirectattribute来传参数

public string fi唐代皇帝顺序rst(redirectattribute redirectattribute){    redirectattribute.addattribute("param1", "lay");    return "redirect:/page/cond";}

3.redirectattribute—–addflashattribute()的用法

@controller@requestmapping("/page")public class redirectdemo{    @requestmapping("/first")    public string first(redirectattribute redirectattribute){        redirectattribute.addflashattibute("param1", "lay");        return "redirect:/page/cond";    }    @requestmapping("/cond")    public string cond(@m三八妇女节祝福图片odelattribute("param1") string param1){        system.out.println(param1);        return "cond";    }}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 03:34:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/4dfcdf775552fd71e2c8d69bf0bda43c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:SpringMVC 重新定向redirect请求中携带数据方式.doc

本文 PDF 下载地址:SpringMVC 重新定向redirect请求中携带数据方式.pdf

标签:属性   数据   重定向   参数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图