java框架---springMVC

概述

是基于MVC设计模式来实现的, 其中(POJO就是Model层,我们的JSP就是视图层,我们的Controller就是控制层。)

● 与前端进行交互

MVC模型

用来进行分层的结构, MVC(Model模型、View视图、Control控制层),将软件进行分层达到松耦合的效果。

在MVC设计模式中认为, 任何软件都可以分三层:控制层(Controller)、数据处理模型(Model)、负责展示数据的视图(View)。

在这里插入图片描述

源码分析

● 前端控制器DispatcherServlet: 接受请求(url和方法的匹配规则)和做出响应
● 处理器映射器HandlerMapping: 就是根据url找到对应的类对应的方法
● 处理器适配器HandlerAdaptor: 就是干活的(Controller-Service-Dao-db)
● 视图解析器ViewResolver: 就是准备网页上要展示数据的格式
● 视图渲染View: 给浏览器响应,在浏览器上做展示

工作原理

在这里插入图片描述
在这里插入图片描述

详细流程

  1. 客户端发送请求
  2. 前端控制器 DispatcherServlet 接收客户端请求
  3. 处理器映射 HandlerMapping 解析请求对应的 Handler
  4. 处理器适配器 HandlerAdapter 会根据 Handler 来调用真正的处理器开处理请求,并处理相应的业务逻辑
  5. 处理器返回一个模型视图 ModelAndView
  6. 视图解析器进行解析
  7. 返回一个视图对象
  8. 前端控制器 DispatcherServlet 渲染数据(Moder)
  9. 将得到视图对象返回给用户

简单 MVC 项目

● Spring用来管理项目中的所有Bean,需要使用注解@Component @Autowired @Service @Component等
● Springmvc用来管理Controller层,需要使用的注解有@RestController @RequestMapping等
● 就是实现MVC三层代码间松耦合
● url -> Controller -> Service 获取数据 -> Service准备好的数据,返回给Controller层 -> 浏览器展示

Controller

创建 Controller 类

@RestController
@RequestMapping("/car")
public class CarController {
    @Autowired
    private CarService carService;

    @RequestMapping("/get")
    public Car get(){
        return carService.get();
    }
}

service

创建接口

//用来实现MVC里的C层的优化
public interface CarService {
    //接口里的方法都是抽象方法
    Car get();
}

创建实现类

@Service //和@Component一样
public class CarServiceImpl implements CarService{

    @Override
    public Car get() {
        Car c = new Car();
        c.setName("保时捷");
        c.setColor("红色");
        c.setPrice(641000.9);

        return c;
    }
}

Module

package cn.detu.pojo;

import org.springframework.stereotype.Component;

@Component //spring 框架提供的,用来ioc
public class Car {

    private String name;
    private String color;
    private Double price;

    public Car() { }
    public Car(String name, String color, Double price) {
        this.name = name;
        this.color = color;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    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{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                ", price=" + price +
                '}';
    }
}

Run

package cn.detu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偶尔也吹晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值