SpringMVC重定向传递参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012848709/article/details/82835655

楔子

阅读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;
	}

猜你喜欢

转载自blog.csdn.net/u012848709/article/details/82835655
今日推荐