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)
上一篇 2025年8月23日 上午10:43
下一篇 2025年8月23日 上午11:15


相关推荐

  • matlab库函数大全[通俗易懂]

    matlab库函数大全[通俗易懂]附录MATLAB函数参考附录1常用命令附录1.1管理用命令函数名功能描述函数名功能描述addpath增加一条搜索路径rmpath删除一条搜索路径demo运行Matlab演示程序type列出.M文件

    2022年7月17日
    23
  • 创建xsync 脚本

    创建xsync 脚本1、安装rsync:yum-yinstallrsync2、创建xsync文件并进行编辑(最好放到配置过环境变量的目录下)输入命令:vi/usr/local/spark/spark-standalone/bin/xsync#!/bin/bash#1获取输入参数个数,如果没有参数,直接退出pcount=$#if[$pcount-lt1]thenechoNoEnoughArguement!exit;fi#2.遍历集群所有机器forh…

    2022年5月5日
    44
  • 面试官让我说一下Mybatis一级缓存、二级缓存的区别,史诗级回答让他刮目相看

    面试官让我说一下Mybatis一级缓存、二级缓存的区别,史诗级回答让他刮目相看说起 mybatis 大家可能都知道它是一个优秀的久层框架 它支持定制化 SQL 存储过程以及高级映射 面试中都会问起 mybatis 一级缓存和二级缓存 它体现出你对 mybatis 这个开发中的理解 如果照着答案背的话只能拿到一个及格分 所以今天咱们就好好聊聊 mybatis 另外本人整理了 20 年面试题大全 包含 spring 并发 数据库 Redis 分布式 dubbo JVM 微服务等方面总结 下图是部分截图 需要的话点这里点这里 暗号 CSDN 1 首先 什么是 Mybatis MyBatis 是一

    2026年3月18日
    3
  • SpringBoot部署Jar文件,瘦身优化指南!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:xautlx gitee.com/xautlx/package-optimize-demo 本文截取代码片段来…

    2021年6月28日
    89
  • pool2_commons pool

    pool2_commons pool一次服务上线没多久,页面处于刷新状态,系统发生假死,查看后台日志,并未发现任何的异常信息,在请求接口处增加debug日志后发现,程序在执行到数据库查询相关的地方卡死了。怀疑是数据库连接的问题,但是使用Navicat连接数据库正常。通过jstack导出线程快照发现,jstack<pid>>>jstack.log大量处于WAITTING状态的线程,而这些线程都是在调用borrowObject方法,这个是apachecommon…

    2026年1月23日
    4
  • 随机森林回归算法_随机森林算法的优缺点

    随机森林回归算法_随机森林算法的优缺点随机森林回归算法原理随机森林回归模型由多棵回归树构成,且森林中的每一棵决策树之间没有关联,模型的最终输出由森林中的每一棵决策树共同决定。随机森林的随机性体现在两个方面:1、样本的随机性,从训练集中随机抽取一定数量的样本,作为每颗回归树的根节点样本;2、特征的随机性,在建立每颗回归树时,随机抽取一定数量的候选特征,从中选择最合适的特征作为分裂节点。算法原理如下:(a)从训练样本集S中随机…

    2022年8月21日
    25

发表回复

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

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