SpringBoot学习5.12-SpringMVC-重定向

本文详细解析了SpringMVC框架中的重定向机制,通过具体示例展示了如何使用RedirectAttributes在重定向过程中传递数据,以及如何从重定向目标控制器接收这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.重定向定义

重定向:将网络请求重新定个方向,转移到其他请求上去。例如请求url1,url1不返还结果,而是重定向到url2,url2返回结果。

2.例子

例1:请求mrd2(http://localhost:8080/mvcredirect/mrd2?name=zhangsan),重定向到mrd1。

例1:请求mrd3(http://localhost:8080/mvcredirect/mrd3?name=李四),重定向到mrd4。

注意RedirectAttributes.addFlashAttribute()是可以将对象数据保存并转移给重定向后的请求的。

package com.zyf.springMVC.mvcredirect;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@RequestMapping(path = "/mvcredirect")
public class MvcRedirectController {
	@RequestMapping(value = "/mrd1")
	public ModelAndView mrd1(String name, ModelAndView mav) {
		mav.addObject("name", name);
		mav.setViewName("mvcredirect/mrd1");
		return mav;
	}
	// http://localhost:8080/mvcredirect/mrd2?name=zhangsan
	@RequestMapping(value = "/mrd2")
	public ModelAndView mrd2(String name, ModelAndView mav) {
		mav.addObject("name", name);
		// 重定向到mrd1
		mav.setViewName("redirect:/mvcredirect/mrd1");
		return mav;
	}
	// http://localhost:8080/mvcredirect/mrd3?name=李四
	@RequestMapping(value = "/mrd3")
	public ModelAndView mrd3(String name, RedirectAttributes ra, ModelAndView mav) {
		User user = new User();
		user.setName(name);
		// 重定向到mrd4,且将对象数据传递过去
		ra.addFlashAttribute("user", user);
		// mav.addObject("user", user); 此方法无法传递对象
		mav.setViewName("redirect:/mvcredirect/mrd4");
		return mav;
	}
	@RequestMapping(value = "/mrd4")
	public ModelAndView mrd4(User user, ModelAndView mav) {
		mav.addObject("user", user);
		mav.setViewName("mvcredirect/mrd4");
		return mav;
	}
}

测试结果

例1,访问http://localhost:8080/mvcredirect/mrd2?name=zhangsan

 

完成后,显示的是mrd1请求,重定向成功:

例2效果类似。

 

github:https://github.com/zhangyangfei/SpringBootLearn.git中的springMVC工程。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值