SpringMVC参数传递的格式
1.简单参数传值
<input type="text" name="username" value="admin" />
<input type="text" name="age" value="18" />
前提: servlet 是一种参数传递的机制 要求:所有的参数类型都是String 数据类型
说明: 数据类型的转化是框架帮助完成的!!!
public xxxx getUser(String username,Integer age)
2.对象的方式接收参数
<input type="text" name="username" value="admin" />
<input type="text" name="age" value="18" />
要求: 1.属性的名称必须与name属性名称一致.
2. 要求对象中必须有set/get方法 对象的属性都是private
public xxxx getUser(User user)
3. 同名提交问题
<input name="hobby" type="text" value="吃1">
<input name="hobby" type="text" value="吃2">
<input name="hobby" type="text" value="吃3">
说明: 有时页面中会出现同名的提交问题 name属性都是一致的. 问 SpringMVC如何接收
原理: 当页面进行同名提交. 会将参数使用","号进行拼接 hobby = 吃1,吃2,吃3 String数据类型
mvc参数接收:
public xxxx getUser(String[] hobby){
//hobby 按照,号拆分为数组 之后循环变量 取值操作......
}
…的本质就是数组
public xxxx getUser(String... hobby){
//hobby 按照,号拆分为数组 之后循环变量 取值操作......
}
4.为对象的引用赋值
原则: SpringMVC中页面的name属性名称 不能重复, 除非同名提交问题
实际需求: 使用对象的引用解决 实际需求中的同名提交问题
<input name="name" type="text" value="二郎神"> user(name) 二郎神,啸天
<input name="dog.name" type="text" value="啸天"> dog(name) 二郎神,啸天
public class User{
private String name; //二郎神
private Dog dog; //dog对象
}
public class Dog{
private String name; //啸天
}
public xxxx getUser(User user){
}
5.restFul风格
get请求案例: http://localhost:8080/getUser?id=100
restFul: 可以简化get请求的结构 简化key 使用/进行分隔,请求路径中不能有动词,要求restFul的请求是无状态的.
http://localhost:8080/user/100/tom 参数接收:
@RequestMapping("/user/{id}/{name}")
public xxx getUser(@Pathvariable Integer id, @Pathvariable String name){
}
//要求: {属性名称} 必须与对象的属性名称一致 get/set方法支持
@RequestMapping("/getUser/{id}/{name}")
public xxx getUser(User user){
}
请求类型与业务逻辑的关系:
请求路径: http://localhost:8080/user/100/tom type=“put”
RestFul中要求: 通过请求的类型控制业务逻辑的执行.
- Get 查询操作
- Post 登录/注册时使用(增)
- Put 修改操作
- Delete 删除操作
@GetMapping("/user/{id}/{name}")
public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
}
@PutMapping("/user/{id}/{name}")
public xxx getUser(User user){
}
6.restFul面试题
考题: 什么是restFul?
答:
1.restFul其实可以简化之前的get请求的类型,将参数使用/的方式进行分隔,减少了url参数的传递的字节信息.
2.restFul规定,可以通过一个url请求的地址,通过不同的请求的类型,控制业务逻辑. restFul中 要求路径中不能出现动词.