Spring MVC数据绑定和响应——简单数据类型绑定(二)简单数据类型绑定

发布于:2024-06-30 ⋅ 阅读:(159) ⋅ 点赞:(0)

一、简单数据类型绑定的概念

        简单数据类型的绑定,就是指Java中基本类型(如int、double、String等)的数据绑定。在Spring MVC中进行简单类型的数据绑定,只需客户端请求参数的名称和处理器的形参名称一致即可,请求参数会自动映射并匹配到处理器的形参完成数据绑定。

        下面通过案例演示简单数据类型的数据绑定,该案例要求实现Integer类型和String类型的数据绑定,案例具体实现步骤如下所示。

1、修改UserController.java文件,在UserController类中新增getUserNameAndId( )方法,用来接收客户端请求中的参数。

@RequestMapping("/getUserNameAndId")
public void getUserNameAndId(String username,Integer id) {
	System.out.println("username="+username+",
	id="+id);
}

2、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/getUserNameAndId?username=Spring&id=1,访问后,控制台打印信息如图所示。 

uername=Spring,id=1

二、参数别名的设置

        需要注意的是,有时候客户端请求中参数名称和处理器的形参名称不一致,这就会导致处理器无法正确绑定并接收到客户端请求中的参数。为此,Spring MVC提供了@RequestParam注解来定义参数的别名,完成请求参数名称和处理器的形参名称不一致时的数据绑定。

三、@RequestParam注解的属性

属性

说明

value

name属性的别名,这里指参数的名称,即入参的请求参数名称,如value="name"表示请求的参数中,名称为name的参数的值将传入。如果当前@RequestParam注解只使用vaule属性,则可以省略value属性名,如@RequestParam("name")

name

指定请求头绑定的名称

required

用于指定参数是否必须,默认是true,表示请求中一定要有相应的参数

defaultValue

形参的默认值,表示如果请求中没有同名参数时的默认值

四、@RequestParam注解的使用

        假设浏览器中的请求地址为http://localhost:8080/chapter12/getUserName?name=Spring,可以在getUserName()方法中使用@RequestParam注解标注参数。

@RequestMapping("/getUserName")
public void getUserName(@RequestParam(value="name",
required = false,defaultValue = “itheima") String username) {
	System.out.println("username="+username);		}

        上述代码中,@RequestParam注解的value属性,给getUserName()方法中的username形参定义了别名name。此时,客户端请求中名称为name的参数,就会绑定到getUserName()方法中的username形参上。@RequestParam注解的required属性设定了请求的name参数不是必须的,如果访问时没有携带name参数,会将defaultValue属性设定的值赋给形参username。

五、@PathVariable注解的两个常用属性

        当请求的映射方式是REST风格时,上述对简单类型数据绑定的方式就不适用了。为此,Spring MVC提供了@PathVariable注解,通过 @PathVariable注解可以将URL中占位符参数绑定到处理器的形参中。@PathVariable注解有以下两个常用属性。

•    value:用于指定URL中占位符名称。

•    required:是否必须提供占位符,默认值为true。

六、@PathVariable注解的使用 

        在UserController.java类中新增一个处理方法getPathVariable( ),在该方法中使用@PathVariable注解进行数据绑定,具体代码如下所示。

@RequestMapping("/user/{name}")
public void getPathVariable(@PathVariable(value = "name") 
String username){
	System.out.println("username="+username);
}

        上述代码中,通过@PathVariable注解的value属性将占位符参数“name”和处理方法的参数username进行绑定。

七、@RequestParam注解value属性可省略的情况

        启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/user/Spring,访问后,控制台打印信息如图所示。

username=Spring

        从运行结果的打印信息可以看出,控制台打印出了username的值为Spring。这表明访问地址后执行了getPathVariable()方法,@PathVariable注解成功将请求URL中的变量user映射到了方法的形参username上。如果请求路径中占位符的参数名称和方法形参名称一致,那么@PathVariable注解的value属性可以省略。


网站公告

今日签到

点亮在社区的每一天
去签到