1.SpringMVC
Spring内部数据结构
1.数据的结构: Map 理解为容器
2.数据内容: KEY-VALUE
-KEY:一般都是类名的首字母小写 helloController
-Value: 一般存储的是经过反射等机制实例化的对象
Map<helloController,controller对象>
3.单例: 容器中只保存一个对象, spring容器管理对象的生命周期 和容器几乎同生共死
默认:单例对象
多例: 如果用户需要使用,则新创建一个对象交给用户使用,由用户管理对象的生命周期.
bean配置文件说明
与Map集合进行关联
———————————————
1.1 框架的作用
接收前端传递的数据,与用户进行交互.
1.2 SpringMVC参数传递的格式
1.2.1 简单参数传值
html
前提: servlet 是一种参数传递的机制 要求:所有的参数类型都是String 数据类型
说明: 数据类型的转化是框架帮助完成的!!!
public xxxx getUser(String username,Integer age)
1.2.2 对象的方式接收参数
html
要求: 1.属性的名称必须与name属性名称一致.
2. 要求对象中必须有set/get方法 对象的属性都是private
public xxxx getUser(User user)
1.2.3 同名提交问题
html
说明: 有时页面中会出现同名的提交问题 name属性都是一致的. 问 SpringMVC如何接收
原理: 当页面进行同名提交. 会将参数使用","号进行拼接 hobby = 吃1,吃2,吃3 String数据类型
mvc参数接收:
public xxxx getUser(String[] hobby){
//hobby 按照,号拆分为数组 之后循环变量 取值操作......
}
...的本质 就是数组
public xxxx getUser(String... hobby){
//hobby 按照,号拆分为数组 之后循环变量 取值操作......
}
1.2.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){
}
1.2.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中要求: 通过请求的类型控制业务逻辑的执行.
1.Get 查询操作
2.Post 登录/注册时使用(增)
3.Put 修改操作
4.Delete 删除操作
@GetMapping("/user/{id}/{name}")
public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
}
@PutMapping("/user/{id}/{name}")
public xxx getUser(User user){
}
1.2.6 restFul面试题
考题: 什么是restFul?
答:
1.restFul其实可以简化之前的get请求的类型,将参数使用/的方式进行分隔,减少了url参数的传递的字节信息.
2.restFul规定,可以通过一个url请求的地址,通过不同的请求的类型,控制业务逻辑. restFul中 要求路径中不能出现动词.
1.2.7 SpringMVC调用流程图(扩展)