1、表单提交的数据都是key=value格式的(username=zs&password=123), SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的(要求:提交表单的name和方法的参数的名称是相同的)
示例:
<form action="">
用户名:<input type="text" name="username"/>
密码: <input type= "password" name="password"/>
<input type="submit"/>
</form>
public String register(String username , String password){}
支持的数据类型
基本数据类型和字符串类型
实体类型(JavaBean)
集合数据类型(List、map集合等)
-
客户端提交的表单参数名称, 和Controller里方法参数名称相同
-
SpringMVC会自动绑定同名参数,并自动转换类型
对象类型 【重点】
SpringMVC会帮我们自动把表单参数,封装成对象,但是要求:
客户端提交的表单参数名称,必须和JavaBean的属性名一样!
代码:
dao层:
public class User {
private String username;
private String password;
private int age;
}
前端页面:
<form action="/requestObjectParam">
用户名:<input type="text" name="username"/><br/>
密 码:<input type="text" name="password"/><br/>
年 龄:<input type="text" name="age"/><br/>
<input type="submit"/>
</form>
controller:
@RequestMapping("/requestObjectParam")
public String requestObjectParam(User user){}
常用注解讲解:
1、@requestParam
使用说明:
1、添加注解后,可以对浏览器请求做出要求,要求一定要有指定参数,没有就会报错
2、可以把请求提交的参数赋值给形参
代码:
@RequestMapping("/requestParam")
public String requestParam(@RequestParam(value="abc" , required = false , defaultValue = "张三") String username , @RequestParam String password){
System.out.println("username = " + username);
System.out.println("password = " + password);
return "success";
}
注:@RequestBody只能接受url的传参?name=xxx,form表单数据的提交,无法接受josn对象
2、 @RequestBody
作用:
1. 可以获取表单提交上来的请求体,只有post请求才有请求体,get请求是没有请求体【不常用】
拿到的是一个字符串: username=admin&password=123456;
2. 可以接收页面提交上来的json数据,封装到JavaBe里面【常用】
步骤:
1. 方法参数的前面打上注解 @RequestBody,springmvc就会把请求体赋值给方法的参数。
axios.post("/requestBody02" , data);
@RequestMapping("/requestBody02")
public String requestBody02(@RequestBody User user ) {}
注意: get 请求方式不适用。
3、@pathVariable
作用:
用于截取请求地址(url)里面的某些部分的数据。这个需要配合RestFul风格来说明
以前删除用户: localhost:82/deleteUser?id=3restFul : localhost:82/delete/3
@RequestMapping("/delete/{id}")
public String pathVariable(@PathVariable(value="id") int id) {}