Spring MVC中redirect重定向3种方式(带参数)

Spring MVC中redirect重定向3种方式(带参数)SpringMVC中做form表单功能提交时,防止用户客户端后退或者刷新时重复提交问题,需要在服务端进行重定向跳转,其中redirect是直接跳转到其他页面,有以下3种方法进行重定向。redirect重定向流程客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,……

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Spring MVC中做form表单功能提交时,防止用户客户端后退或者刷新时重复提交问题,需要在服务端进行重定向跳转,其中redirect是直接跳转到其他页面,有以下3种方法进行重定向。

redirect重定向流程

客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。

1. response.sendRedirect重定向跳转

@RequestMapping(value="/testredirect",method = { 
    RequestMethod.POST, RequestMethod.GET })  
public ModelAndView testredirect(HttpServletResponse response){ 
     
    response.sendRedirect("/index");
    return null; 
}

Jetbrains全家桶1年46,售后保障稳定

2. ViewResolver直接跳转

不带参数

@RequestMapping(value="/testredirect",method = { 
    RequestMethod.POST, RequestMethod.GET })  
public  String testredirect(HttpServletResponse response){ 
     
    return "redirect:/index";  
} 

带参数

@RequestMapping("/testredirect")
public String testredirect(Model model, RedirectAttributes attr) { 
   
	attr.addAttribute("test", "51gjie");//跳转地址带上test参数
    attr.addFlashAttribute("u2", "51gjie");//跳转地址不带上u2参数
	return "redirect:/user/users";
}
  • 使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面,如上代码即为http:/index.action?test=51gjie

  • 使用addFlashAttribute不会跟随在URL后面,会把该参数值暂时保存于session,待重定向url获取该参数后从session中移除,这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成.

  • spring mvc设置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect=true,这样可以提高效率,避免不必要的检索。

3. ModelAndView重定向

不带参数

@RequestMapping(value="/restredirect",method = { 
    RequestMethod.POST, RequestMethod.GET })  
public  ModelAndView restredirect(String userName){ 
     
    ModelAndView  model = new ModelAndView("redirect:/main/index");    
    return model;  
}

带参数

@RequestMapping(value="/toredirect",method = { 
    RequestMethod.POST, RequestMethod.GET })  
public  ModelAndView toredirect(String userName){ 
     
    ModelAndView  model = new ModelAndView("/main/index");   
    model.addObject("userName", userName);  //把userName参数带入到controller的RedirectAttributes
    return model;  
}

4. 直接跳转某网页

import javax.servlet.http.HttpServletResponse;

HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
httpServletResponse.sendRedirect("http://srip.cpu.edu.cn/#/admins")

总结

1, redirect重定向可以跳转到任意服务器,可以用在系统间的跳转。
2, Spring MVC中redirect重定向,参数传递可以直接拼接url也可以使用RedirectAttributes来处理,由于是不同的请求,重定向传递的参数会在地址栏显示,所以传递时要对中文编码进行处理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200700.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程「建议收藏」

    ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程「建议收藏」笔记本散热风扇使用时间长了就累积很多灰尘,堵塞出风口,从而大幅降低散热效果。因此有必要对其清理。要彻底清理风扇灰尘,需要拆机方可。首先要把笔记本的电池取下。这款笔记本的硬盘仓很隐蔽,不过在D面还是有明显的图标提示,拧下螺丝和卡扣,即可看到硬盘。硬盘盖拆下来之后,只需用力的拔出黑带即可把硬盘取下。电池、硬盘、内存都取下之后,我们用螺丝刀把D壳周围的螺丝你拧下,之后就可以开始拆卸键盘以及外壳了。拆卸键…

    2022年6月27日
    53
  • 产品经理高质量产物的五步思维法

    产品经理高质量产物的五步思维法nbsp 产品经理高质量产物的五步思维法职场中经常会遇到以下场景 领导安排工作跨部门会议技术探讨需求问题你遇到这些场景后 接下来会有哪些行为呢 其实 每个场景的本质 都是解决一个或多个问题 找到最合适答案 而不同人接收问题到成果输出的流程机制却不尽相同 也就导致最后的成果质量大相径庭 他人非常满意 高度认可 亦或他人十分失望 你的职场形象大打折扣 结果两极分化的原因是最核心的环节出了问题 即接收问题到成果

    2025年7月23日
    4
  • BeanUtils.populate方法使用

    BeanUtils.populate方法使用BeanUtils.populate方法使用1.在执行BeanUtils.populate之后,会把map封装成User对象。要注意的是,UserBean类中的字段名必须和html中的name属性值相同,不然在BeanUtils.populate执行之后,User对象的字段中会出现NULL数据Map<String,String[]>map=req.getParameterMap();//创建User对象UserloginUser=newUser

    2022年7月26日
    7
  • idea 激活码(注册激活)

    (idea 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4D…

    2022年3月30日
    60
  • vue 文件上传至服务器_oss文件服务器

    vue 文件上传至服务器_oss文件服务器为什么使用对象存储OSS很多企业的文件上传下载都是通过文件流的形式进行上传下载的,需要后端配合,对服务器压力很大,而且高消费,对公司损失太大,我们选择使用oss将尽可能地缩小成本,以及对网站及逆行大幅度提升使用对象存储OSS改变了什么网站数据动静分离,大幅提升网页性能 单独的文件管理界面,管理网站文件和本地电脑一样高效率方便使用 成本低,资源弹性伸缩,按需付费什么是对象存储OSS阿里云对象存储OSS(ObjectStorageService)是一款海量、安全、低成本、高可靠的云存储

    2022年8月15日
    7
  • 手机java程序_2020年最流行的Java开发技术

    手机java程序_2020年最流行的Java开发技术●写在前面的话●Java几乎无处不在,无论在智能手机、台式机、游戏设备还是科学超级计算机上,处处都有Java的影子。全世界有数百万的Java程序员在开发基于Java的产品。然而,如此激烈的竞争,意味着Java开发人员必须时刻保持领先地位。为此,他们必须随时了解和洞悉Java生态系统中的最新动态。Java程序员需要不断进步。在本文中,我们将讨论2020年Java开发人员需要掌握的Java最…

    2022年7月8日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号