50@RequestParam用法和MultiValueMap

本文介绍了@RequestParam注解在SpringMVC中的应用,包括如何获取请求参数,以及当方法参数为复合对象或MultiValueMap时如何进行映射。使用MultiValueMap可以方便地获取所有请求参数。

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

@RequestParam修饰控制器方法参数,用于获取请求参数
实例:

	@RequestMapping("/login"public String login(@RequestParam ("name") String n,@RequestParam("age") Integer a, Model model)
    {
        if (userService.addUser2(n,a)>0)
        {
            model.addAllAttributes(Map.of("tip","添加用户成功!"));
            System.out.println("姓名:" + n + " 年龄:" + a);
            return "success";
        }
        model.addAllAttributes(Map.of("tip","添加用户失败!"));
        return "error";
    }

当然SpirngMVC很少用着个注解,因为SpringMVC可以同名映射,也就是方法参数与请求参数同名就可以相互映射。例如:

	@RequestMapping("/login"public String login(String name,Integer age, Model model)
    {
        if (userService.addUser2(name,age)>0)
        {
            model.addAllAttributes(Map.of("tip","添加用户成功!"));
            System.out.println("姓名:" + name + " 年龄:" + age);
            return "success";
        }
        model.addAllAttributes(Map.of("tip","添加用户失败!"));
        return "error";
    }

不仅如此,当方法的形参为复合对象时,复合对象的属性也会与请求参数发生同名映射,例如:

	@RequestMapping("/login"public String login(User user, Model model)
    {
        if (userService.adduser(user)>0)
        {
            model.addAllAttributes(Map.of("tip","添加用户成功!"));
            return "success";
        }
        model.addAllAttributes(Map.of("tip","添加用户失败!"));
        return "error";
    }
public class User
{
    private String name;
    private Integer age;
    //省略getter、setter方法
}

除了可以用复合对象来封装请求参数,也可以用MultiValueMap,该对象是一个特殊的Map,只要用@RequestParam修饰它,它就包含了所有请求参数,然后就可以通过它的getFirst方法获取请求参数,例如:

public String login(@RequestParam MultiValueMap<String,Object> params, Model model)
{
	String n = (String)params.getFirst("name");
	Integer a = (Integer)params.getFirst("age");
	if (userService.addUser2(n,a)>0)
	{
		model.addAllAttributes(Map.of("tip","添加用户成功!"));
		System.out.println("姓名:" + n + " 年龄:" + a);
		return "success";
	}
	model.addAllAttributes(Map.of("tip","添加用户失败!"));
	return "error";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值