Spring MVC默认类型以及简单数据类型的数据绑定

275 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天

默认类型数据绑定

当使用Spring MVC默认支持的数据类型作为处理器的形参类型时,Spring MVC的参数处理适配器会默认识别这些类型并进行赋值。Spring MVC常见的默认类型如下所示:

  • HttpServletRequest:获取请求信息
  • HttpServletResponse:处理响应信息
  • HttpSession:获取session中存放的对象
  • Model/ModelMap:Model是一个接口,ModelMap是一个类,Model的实现类对象和ModelMap对象都可以设置model数据,model数据会填充到request域。

例:

@RequestMapping("/getUserId")
//这里的HttpServletRequest就是默认类型
public void getUserId(HttpServletRequest request){
    String userid = request.getParameter("userid");
    System.out.println("userid=" + userid);
}

访问的时候通过/getUserId后接?userid=1即可接收该参数

简单数据类型绑定

简单数据类型的绑定,就是指Java中基本类型(如int、double、String等)的数据绑定。

在Spring MVC中进行简单类型的数据绑定,只需要客户端请求参数的名称和处理器的形参名称一致即可,请求参数会自动映射并匹配到处理器的形参完成数据绑定。

例:

@RequestMapping("/getUserNameAndId")
//匹配这里的username和id
public void getUserNmaeAndId(String username, Integer id){
    System.out.println("username=" + username + ",id=" + id);
}

访问时同样也是通过/getUserNameAndId后接?username=hexiaoxing&id=1来定义参数,注意参数名称要与定义的形参保持一致

如果请求中的参数名称和处理器的参数名称不一致,则可以设置 @RequestParam注解来定义参数的别名来完成绑定

@RequestParam注解的参数

例:

public void getUserNmaeAndId(@RequestParam(value="name", require = false, defaultValue = "hexiaoxing") String username){
    System.out.println("username=" + username);
}

@PathVariable注解

当请求的映射方式是REST风格时,上述对简单数据类型绑定的方式就不再适用了。

但我们可以通过@PathVariable注解注解来将URL中占位符参数绑定到处理器的形参中。

属性:

  • value:用于指定URL中占位符名称
  • required:是否必须提供占位符,默认值为true

例:

@RequestMapping("user/{name}")//这里的name是占位符
//下面通过value属性将username和占位符绑定在一起
public void getPathVariable(@PathVariable(value = "name") String username){
    System.out.println("username = " + username);
}

如果请求路径中占位符的名称和方法形参名称一致,那么@PathVariable注解的value属性可以省略