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来处理,由于是不同的请求,重定向传递的参数会在地址栏显示,所以传递时要对中文编码进行处理。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql查询语句select-(null,not null,is null和is not null)

    mysql查询语句select-(null,not null,is null和is not null)1一些概念  1.1null与notnull  null和notnull是mysql的字段属性,或称为数据类型的属性,不属于任何类型。null值也不等同于空值,空值是不占用存储空间的,null占用存储空间,如对myisam表占用1bit额外存储空间。  1.2isnull与isnotnull  isnull和isnotnull是mysq

  • Android Studio StrictMode

    Android Studio StrictMode最近接手一个新项目,研究下代码,并学习其中一些好的地方。比如今天发现运行app以后会有log显示 StrictMode相关信息,通过查看代码,我发现在某Activity中使用了StrictMode的一些功能,老实说,StrictMode我在手机的开发者选项中有见到过,enable以后用过几分钟……尝鲜,但是代码里面从来没用过这个功能,从来没用过    他主要是检测线程&虚拟

  • C语言文件打开方式简介

    C语言文件打开方式简介1、“r”以只读方式打开一个文件;2、“w”以只写方式打开一个文件;3、“a”打开一个文件追加;4、“rb”以只读方式打开一个二进制文件;5、“rw”以只写方式打开一个二进制文件;6、“ra”打开一个二进制文件追加;7、”r+”以读写方式打开一个文件;8、“w+”以读写方式建立一个文件;9、“a+”以读写方式打开一个文件追加;10、“rb+”以读写方式打开一个二

  • vue-cli-service serve报错_token怎么获取

    vue-cli-service serve报错_token怎么获取前端调试使用node环境调试代码时,返回token无效,线上环境和其他浏览器都没有错误解决方案:打开chrome输入chrome://flags/搜索SameSitebydefaultcookies找到SameSitebydefaultcookies和CookieswithoutSameSitemustbesecure将两个都设置成disable参考:https://www.cnblogs.com/yuan31415/p/13745139.html原因Chrome5

  • Vbs调用MsAgent组件,很有趣

    Vbs调用MsAgent组件,很有趣MicrosoftAgent是微软公司发布的一项代理软件开发技术,我们知道,在Office帮助系统中有一种叫作Office助手的代理软件,但其只允许Office各个组件调用,Agent动画人物可由任何Windows程序调用;Agent支持文字气球和输入提示条,在输出语音的同时把文字输出至一个卡通式文字气球中。如果电脑系统中安装有Agent语音识别引擎,当用户可以通过声卡、麦克风与用户交谈…

  • 通过ulimit改善linux系统性能(摘自IBM)[通俗易懂]

    通过ulimit改善linux系统性能(摘自IBM)

发表回复

您的电子邮箱地址不会被公开。

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