springmvc 重定向操作如何实现传参

本文详细介绍了在Web应用中如何利用session和RedirectAttributes实现重定向时的参数传递,包括两种常见方法及其优缺点,适用于前后端开发人员学习。

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

重定向操作如何实现传参?

1、借助session,将request域对象中的键值对转存到session域对象中,如何转存:@SessionAttributes

2、实现----第一种实现方式:可能存在弊端是加入键值对只需要使用一次,那么在用完之后并没有从session域对象中消失,还一直占用空间,不合适;可以借用session的移除键值对方法removeAttribute()消除

1)页面第一次请求

<a href="redirect.action?id=10">提交</a>

2)第一个处理单元

@RequestMapping("/redirect.action")
	public String address2(int id,Model model) {
		System.out.println("first:"+id);
		model.addAttribute("id", id);//转到request域对象的
		return "redirect:/second.action";
	}

3)第二个处理单元

@RequestMapping("/second.action")
	public String second(HttpServletRequest request) {
		HttpSession session = request.getSession();
		Object id = session.getAttribute("id");
		//二次请求时从session中获取键值对
		System.out.println("second:"+id);
		return "/main.jsp";
	}

4)响应页面

<body>
main.....
<hr>
${sessionScope.id }
</body>

5)注意需要在类上添加注解,实现request域转入session域操作

@Controller
@SessionAttributes(value = {"id","name"})//将键值对放入session域对象中
public class RedirectController {

注解的value属性可以设置的是字符串数组,值是多个字符串,每个字符串表示一个key名称

3、实现----第二种实现方式 此方式仅仅只在一次重定向操作中能够传递参数,同样借助session域对象没有问题

1)第一次请求

<a href="redirectSec.action?id=101">提交</a>

2)第一个执行单元

@RequestMapping("/redirectSec.action")
	public String redirect(int id,RedirectAttributes ra) {
		System.out.println("first:"+id);
		//同样实现将键值对保存到session域对象,但是session域对象中并没有一直保存
		//只不过二次请求的url后面带有此键值对
//		ra.addAttribute("id", id);
		ra.addFlashAttribute("id", id);//作用是消除重定向操作时url后面的键值对
		return "redirect:/sec.action";
	}

3)第二个执行单元

@RequestMapping("/sec.action")
	public String sec(@ModelAttribute("id")int id) {
		System.out.println("second:"+id);
		return "/main.jsp";
	}

4)main页面

<body>
main.....
<hr>
${sessionScope.id }
<hr>
${param.id }<!-- 如果url后面有键值对那么通过此格式可以获取,如果没有键值对,那么获取不到 -->
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值