目录
一、SpringMVC
1.概述:
SpringMVC框架的核心作用:接受浏览器发来的请求 + 给浏览器做出响应
2.MVC设计模式
好处:实现分层的思想,达到松耦合的目的。提高代码的复用性,扩展性,容错性
M:Model模型,用来封装数据
V:View视图,用来展示数据
C:Controller控制器,用来接受请求和处理响应
3.工作原理
1、用户发送请求至前端控制器DispatcherServlet。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器。
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView。
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。
二、SpringMVC实践
1.创建启动类
@SpringBootApplication ——这是一个启动类
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
2.创建Model对象类——也可以称为pojo
@Data @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor public class ItemVO { private Item item; private ItemDesc itemDesc; private ItemParam itemParam; }
3.创建控制类
@RestController ——接受请求(相当于@Controller + @ResponseBody)
@RequestMapping("/car") ——规定了浏览器访问这个类的方式(url路径)
public class CarController {
@RequestMapping("/get")
public Car get() {
Car car = new Car();
car.setId(718);
car.setName("保时捷")
return car;
}
}
三、处理请求参数的方式
1.get方式
向特定的资源发出请求,并返回实体.提交的参数在url中体现.而且数据有最大长度,超出就不行
例如:http://localhost:8080/car/insert?id=1&name=张三&age=18
接收参数方式:(单个变量接收单个;多个变量接收多个;一个对象接收多个参数)
2.post方式
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
接收参数方式:
@RequestMapping("add")
public void add(Student s){ 以对象直接来接收参数
System.out.println(s);
}
3.restFul方式
为了简化GET请求的写法,可以使用RESTFul方式,用法:
1、需要使用注解@PathVariable来获取请求路径中的参数值,@PathVariable用来绑定值
2、通过{???}获取路径中传递来的值
3、以前GET的访问方式即将被简化成:
http://localhost:8080/car/insert/1/张三/18
接收参数方式:
restful方式提交:http://localhost:8080/car/add2/10/BMW/9.9
@RequestMapping("car/add2/{id}/{y}/{x}") {id}是占位符,表示这个参数的位置
public void add2(@PathVariable Integer id, @PathVariabl用来获取{}中间的值
@PathVariable String y,
@PathVariable Double x){
System.out.println(id+y+x);
}
四、SpringMVC常用注解
@Controller 标识是一个Controller,Spring包扫描创建实例
@RequestMapping 请求后的映射路径
@PathVariable 标识接收单个参数
@ResponseBody 返回对象利用jackson工具类转换为json字符串
@RequestParam 参数名和请求参数名称不同时使用,可以设置默认值