SpringMVC请求参数的获取与绑定:基本类型、数组类型、List类型、Map类型

  Spring MVC 页面跳转与返回数据,系列文章:

《Servlet实现页面的跳转:转发、重定向》

《Servlet使用HttpServletResponse返回字符串或JSON内容(解决中文乱码问题)》

《SpringMVC实现页面的跳转:转发、重定向》

《SpringMVC后端实现页面跳转和返回数据:ModelAndView对象、String字符串、JSON格式数据》

《SpringMVC请求参数的获取与绑定:基本类型、数组类型、List类型、Map类型》

当用户在页面触发某种请求时,一般会将一些参数(key/value)带到后台。在SpringMVC中可以通过参数绑定,将客户端请求的key/value数据绑定到Controller处理器方法的形参上。

SpringMVC中有一些默认支持的类型,这些类型可以直接在Controller类的方法中定义,在参数绑定的过程中遇到该种类型就直接进行绑定。其默认支持的类型有以下几种:HttpServletRequest、HttpServletResponse、HttpSession 及 Model/ModelMap。HttpServletRequest可以通过request对象获取请求信息;HttpServletResponse可以通过response对象处理响应信息;HttpSession可以通过session对象得到session中存放的对象;而对于Model/ModelMap,其中Model是一个接口,ModelMap是一个接口实现,它的作用就是将model数据填充到request域。

1、基本类型参数绑定

1.1 基本数据类型参数绑定

在SpringMVC使用基本类型参数绑定,在处理key/value信息时,就会以key名寻找Controller类的方法中具有相同名称的形成并进行绑定。如下面的例子:

/**
 * 根据用户ID,获取用户信息
 */
@RequestMapping(value="getUser",method=RequestMethod.GET)
public String getUser(int id,Model model)
{
    //调用Service获取用户信息
    UserModel userModel = userService.getUserModel(id);
    //通过形成中的model将数据传递到页面
    model.addAttribute("userModel",userModel);
    //返回页面
    return "/user/userInfo";
}

在执行上面的getUser请求时,需要为其URL指定一个参数id。

1.2 @RequestParam注解

注解@RequestParam可以对自定义简单类型的参数进行绑定,即如果使用@RequestParam,就无须设置controller方法的形参名称与request传入的参数名称一致。而不使用@RequestParam注解时,就要求controller方法的形参名称与request传入的参数名称一致,这样才能绑定成功。

假设执行getUser请求时,传入的参数名为user_id,而Java代码使用的是驼峰命名,那么可以通过@RequestParam注解来指定绑定名称,而在形参中继续使用驼峰命名:

/**
 * 根据用户ID,获取用户信息
 */
@RequestMapping(value="getUser",method=RequestMethod.GET)
public String getUser(@RequestParam(value="user_id") int userId,Model model)
{
    //调用Service获取用户信息
    UserModel userModel = userService.getUserModel(userId);
    //通过形成中的model将数据传递到页面
    model.addAttribute("userModel",userModel);
    //返回页面
    return "/user/userInfo";
}

1.2.1 设置非空

如果要求绑定的参数一定不能为空,可以使用@RequestParam注解中的required属性来指定该形参是否必须传入,required属性为“true”指定参数必须传入。例子如下:

/**
 * 根据用户ID,获取用户信息
 */
@RequestMapping(value="getUser",method=RequestMethod.GET)
public String getUser(@RequestParam(value="user_id",required=true) int userId,Model model)
{
    //忽略具体代码...
}

1.2.2 设置默认值

在Controller方法的形参中,如果有一些参数可以为空,但是又期望它们为空时有一个默认值,此时可以使用@RequestParam注解中的defaultValue属性来指定某些参数的默认值。例子如下:

/**
 * 根据用户ID,获取用户信息
 */
@RequestMapping(value="getUser",method=RequestMethod.GET)
public String getUser(@RequestParam(value="user_id",defaultValue="1") int userId,Model model)
{
    //忽略具体代码...
}

2、包装类型参数绑定

在Controller方法中,也可以映射前台页面中包含的包装类型参数。

【示例】实现用户注册功能,在前台页面中使用包装类型进行参数的绑定,执行结果下图:

用户注册页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值