SpringMVC重定向传递参数

楔子

阅读Spring实战 第四版 看到了跨重定向请求传递数据,做了笔记,以备不时之需。

从定向传递参数2中方式

方式1 使用URL模版路径

	@RequestMapping("red2")
	public String reqStrs(Model model) {
		Person p = new Person();
		p.setName("lifneg");
		p.setPwd("000lifeng");
		model.addAttribute("name", p.getName());
		model.addAttribute("pwd", p.getPwd());
		model.addAttribute("address", "huqianyutang");
		return "redirect:/grq/{name}";
		// 浏览器地址显示
		// http://localhost/ssm/grq/lifneg?pwd=000lifeng&address=huqianyutang
	}

使用占位符填充到URL模版中,而非直接连接到重定向String中,这样更加安全。

方式2 通过flash属性发送数据

	@RequestMapping("red3")
	public String reqStrsFlash(RedirectAttributes model) {
		Person p = new Person();
		p.setName("lifneg");
		p.setPwd("000lifeng");
		model.addAttribute("name", p.getName());
		model.addFlashAttribute("nameFlash", p);
		return "redirect:/grq/redDir/{name}";
		// 浏览器地址显示 http://localhost/ssm/grq/lifneg
	}

取值

	@RequestMapping("redDir/{name}")
	public Object redDir(@PathVariable String name, Model model) {
		System.out.println(name);
		Map<String, Object> map;
		if (model.containsAttribute("nameFlash")) {
			System.out.println(model);

		}
		// 打印结果
		// lifneg
		// {nameFlash=Person [name=lifneg, pwd=000lifeng]}
		// Person [name=lifneg, pwd=000lifeng]

		// 重中取出值
		map = model.asMap();
		System.out.println(map.get("nameFlash"));
		Object attribute = req.getAttribute("name");
		return "";
	}

Spring提供了将数据发送为flash属性,按照定义,flash属性会一致携带数据直到下一次请求,然后消失。
RedirectAttributes提供了addFlashAttribute添加flash属性。
在重定向执行之前,所有的flash属性都会复制到会话中,重定向后,存在会话中的flash属性会被取出,并从会话转移到模型中。

https://blog.csdn.net/weiyangdong/article/details/79088368

ModelMap

之前看过``今天重温一次,发现他也是吧请求地址拼接了,只是基本类型,不能用于对象类型

	@RequestMapping("/redMp")
	public String redMv(ModelMap model) {
		Person p = new Person();
		p.setName("豆子");
		p.setPwd("000lifeng");
		
		model.addAttribute("per", p);
		model.addAttribute("names", p.getName());

		return "redirect:/grq/result.do";
		
		//浏览器地址 http://localhost/ssm/grq/result.do?name=%E8%B1%86%E5%AD%90
	}

	@ResponseBody
	@RequestMapping("result")
	public Object result(ModelMap model, String names,Person per) {
		return per;
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值