目录
1.SpringMVC
概述:
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块 SpringMVC就是基于MVC设计模式来实现的
POJO:Model层
JSP:视图层
Controller:控制层
2.MVC模型
概述:
是spring框架的明星产品,代码之间实现松耦合
用来进行分层结构,这样代码分离结构比较清晰,各层之间的代码,各司其职,易于开发大型项目
MVC(model模型 用来封装数据,view视图层 用来展示数据,Control控制层 作用就是用来就收请求)达到松耦合的作用
在MVC设计模式中认为, 任何软件都可以分三层:控制层(Controller)、数据处理模型(Model)、负责展示数据的视图(View)。
在MVC设计思想中要求一个符合MVC设计思想的软件应该保证上面这三部分相互独立,互不干扰,每一个部分只负责自己擅长的部分。如果某一个模块发生变化,应该尽量做到不影响其他两个模块。提高代码的可读性,实现程序间的松耦合、提高代码复用性。
3.工作原理
3.1核心组件
1.DispatcherServiet:前端控制器--接收请求并分发请求
2.HandlerMapping:处理器映射器--根据请求找到具体能处理请求的类名,方法名
3.HandlerAdapter:处理器适配器--正式开始调用方法处理请求,并返回结果
4.ViewReslover:视图解析器--把视图页面找到,把数据进行解析
5.View:视图渲染--具体展示数据并返回给浏览器展示
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响应用户。
创建RunApp.java
```java
package cn.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
@SpringBootApplication
@Controller
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
Car.java
package cn.tedu.pojo;
//Model对象,也称为POJO
//保时捷718 Cayman T,红色,641000元起
public class Car {
private Integer id; //718
private String name; //保时捷
private String type; //Cayman T
private String color; //红色
private Double price; //641000
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Car [id=" + id + ", name=" + name + ", type=" + type + ", color=" + color + ", price=" + price + "]";
}
}
CarController.java
package cn.tedu.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.tedu.pojo.Car;
@RestController
@RequestMapping("/car")
public class CarController {
@RequestMapping("/get")
public Car get() {
//保时捷718 Cayman T,红色,641000元起
Car car = new Car();
car.setId(718);
car.setName("保时捷");
car.setType("Cayman T");
car.setColor("红色");
car.setPrice(641000.0);
return car;
}
}
测试
访问:http://localhost:8080/car/get
执行结果:
{"id":718,"name":"保时捷","type":"Cayman T","color":"红色","price":641000.0}