开启掘金成长之旅!这是我参与「掘金日新计划 · 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属性可以省略