spring boot入门与理解MVC三层架构

这篇具有很好参考价值的文章主要介绍了spring boot入门与理解MVC三层架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、SpringMVC分层框架

分层是为了实现“高内聚,低耦合”,把问题划分开来,各个解决,易于控制,延展和分配资源,最重要有利于后期维护项目;

MVC指的是model,view,controller;

在SpringMVC编程中一般分为四层:

1.表示层:(jsp、html 主要就是界面的展示),负责前后端交互,接收前端发送的请求,然后调用service层,service层再返回数据给它,它再返回给前端。

2.控制层:(Contoller、Action)控制界面跳转,负责前后端交互,接收前端发送的请求,然后调用service层,service层再返回数据给它,它再返回给前端。

3.业务层:(Service)写主要的业务逻辑,调用DAO层,操作数据库,再对返回的数据进行各种业务上的处理,再返回给控制层。实现解耦合目的,虽然不要它也可以运行项目,但是会使项目后期的延展和维护变得困难

4.持久层:(DAO)也叫数据访问层,实现对数据库的访问。完成增删改查功能,把数据返回给service层。

5.实体层:(Model)数据库实体层,存放实体类,实现get、set方法。属性要和数据库的一样。

二、注解的使用

在SpringMVC中经常用到注解,使用注解可以极大的节省开发者的时间,下面是几个最重要的注解介绍:

@Repository:标注数据访问层,可以告诉SpringMVC这是一个数据访问层,并将其申明为一个bean,例如UserDao接口的实现类UserDaoImpl,在类上加注解@Repository("userDao"),bean的名称为userDao

@Service:标注业务层,例如UserService接口的实现类,在类上加@Service("userService"),bean的名称为userService

@Controller:控制层,在控制层类上加@Controller即可,确认其是一个控制层类

@Component:当不确定是属于哪层是用这个注解

三、实践代码演示

项目结构:

spring boot入门与理解MVC三层架构

(1) Model 层

存放实体类,实现get、set方法,属性要和数据库的一样。

//一个model对应一张表中的字段
public class Student {
    private UUID id;
    private String name;
    

    public UUID getId() {
        return id;
    }
    public void setId(UUID id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Student(UUID id, String name){
        this.id = id;
        this.name = name;
    }
    public Student(){}
}

(2)Dao层

数据访问层,和Model层交互。实现接口,对数据库的访问。完成增删改查功能

//定义操作数据库的方法
public interface StudentDao {
    Optional<Student> selectStudentById(UUID id);
    List<Student> selectAllStudents();
    int insertStudent(Student student);
    int upgradeStudent(Student student);
    int deleteStudent(UUID id);
}
 

定义接口的实现,因为没有实现和数据库直接相连,就使用假数据。

@Repository
@Resource
public class FakeStudentDao implements StudentDao {
private static List<Student> database = new ArrayList<>();


@Override
public Optional<Student> selectStudentById(UUID id) {
for(Student s : database){
if(s.getId().equals(id)){
return Optional.of(s);
}
}
return Optional.empty();
}


@Override
public List<Student> selectAllStudents() {
return database;
}


@Override
public int insertStudent(Student student) {
UUID id = UUID.randomUUID();
database.add(new Student(id,student.getName()));
return 1;
}


@Override
public int upgradeStudent(Student student) {
// 先找到这个要更新的student的信息
    int indexToUpdate = -1;
    for(int i = 0;i<database.size();i++){
    if(student.getId().equals(database.get(i).getId())){
        indexToUpdate = i;
    break;
    }
}
    if(indexToUpdate<0) return -1;
    database.set(indexToUpdate,student);
    return 1;
}


@Override
public int deleteStudent(UUID id) {
    Optional<Student> optionalStudent = selectStudentById(id);
    if(!optionalStudent.isPresent()){
        return -1;
    }
    database.remove(optionalStudent.get());
    return 1;
}


}
 

(3)Service层

主要的业务逻辑,调用DAO层,操作数据库,再对返回的数据进行各种业务上的处理,再返回给控制层。实现解耦合目的.

@Service
public class StudentService {
    private StudentDao studentDao;


    @Autowired
    public StudentService(StudentDao studentDao) {
        this.studentDao = studentDao;
    }
    public List<Student> getAllStudents(){
        return studentDao.selectAllStudents();
    }
    public int addStudent(Student student ){
       return studentDao.insertStudent(student);


    }
    public int upgradeStudent(Student student ){
        return studentDao.upgradeStudent(student);


    }


    public int deleteStudent(UUID id){
        return studentDao.deleteStudent(id);


    }
}
 

(4) Controller层

控制界面跳转,负责前后端交互,接收前端发送的请求,然后调用service层,service层再返回数据给它,它再返回给前端。

@RestController
@RequestMapping("/springboot")
public class StudentController {
    private StudentService studentService;
    @Autowired
    public StudentController(StudentService studentService) {
        this.studentService = studentService;
    }
    @GetMapping
    public List<Student> getAllStudents() {
        return studentService.getAllStudents();
}
    @PostMapping
    public String addStudent(@RequestBody Student student){
        studentService.addStudent(student);
        return "Added student";
    }
    @PutMapping
    public String upgradeStudent(@RequestBody Student student){
        studentService.upgradeStudent(student);
        return "Upgrade student";
    }
    @DeleteMapping(path = "{id}")
// localhost:8080/springboot/123
    public String deleteStudent(@PathVariable("id") UUID id){
        studentService.deleteStudent(id);
        return "Deleted student";
    }
}
 
 

 文章来源地址https://www.toymoban.com/news/detail-447134.html

到了这里,关于spring boot入门与理解MVC三层架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • <Spring Boot>开发基于三层架构设计:Dao层、Service层、Controller层及案例一

    三层架构设计:基于Spring Boot开发要使用三层架构: 数据访问层(Dao)、业务逻辑层(Service)、控制层(Control-ler) (1)数据访问层(Dao):Dao层是最底层的设计,用户操作数据库。通过MyBatis持久化实现接口开发,XML文件。Dao层的设计步骤:1、在数据库中生成数据库表 2通

    2024年02月15日
    浏览(43)
  • 三层架构与MVC架构区别

    表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。 servlet层 业务逻辑层:对我们数据实现业务逻辑的封装 service层 数据访问层:对数据库访问操作 dao层         1.MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写

    2024年02月04日
    浏览(45)
  • MVC三层架构

    1.MVC三层架构 MVC(Model-View-Controller)是一种常见的软件设计模式,用于组织和管理应用程序的代码和逻辑。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。每个部分都有不同的职责和功能,以实现代码的分离和可维护性。 下面是对MVC三层

    2024年02月15日
    浏览(54)
  • JavaWeb和MVC三层架构

    网站发布和部署一定要依托技术语言吗: 不一定,一个网站可以直接发布和部署,因为因为浏览器能够识别网页只需要两样东西,网络和静态页面,还有一个装在他们的容器,比如 nginx。 静态页面面临的问题: 1:静态网页是固定的,是不可变的。如果一个网站比如腾讯首页

    2024年02月14日
    浏览(54)
  • MVC 三层架构案例详细讲解

    @ 目录 MVC 三层架构案例详细讲解 每博一文案 1. MVC 概述 2. MVC设计思想 3. 三层架构 4. MVC 与 三层架构的关系: 5. 案例举例:用户账户转账 5.1 M(Model :数据/业务处理层) 5.2 C (Controller : 控制层) 5.3 V (View :视图/展示) 6. 总结: 7. 最后: MVC开始是存在于桌面程序中的,M是指业务

    2024年02月05日
    浏览(55)
  • 【Java Web】005 -- 请求响应 & 分层解耦(Postman、三层架构、IOC、DI、注解)

    目录 前言(SpringBoot程序请求响应流程) 一、请求 1、Postman(接口测试工具) ①、介绍 ②、安装 2、简单参数 ①、原始方式 ②、SpringBoot方法 ③、小结 3、实体参数 ①、简单实体对象 ②、复杂实体对象 ③、小结 4、数组集合参数 ①、数组 ②、集合 ③、小结 5、日期参数

    2024年02月11日
    浏览(53)
  • 深入剖析 MVC 模式与三层架构

    前面我们探讨了 JSP 的使用,随着计算机技术的不断更新迭代,JSP 的技术由于存在很多的缺点,已经逐渐退出了历史的舞台,所以在学习时,我们只需要了解其如何实现的数据的增删改查。不用刨根问底,花费大量的时间,得不偿失。 理解 JSP 及其原理 学会使用 EL 表达式和

    2024年02月22日
    浏览(106)
  • MVC设计模式和与三层架构的关系

    M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为数据承载Bean:专门存储业务数据的,如 Student、User 等 一类称为业务处理Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。 V:View,视图层,指工程中的html或jsp等页面,作用是与用

    2024年01月22日
    浏览(95)
  • MVC设计模式、JSP开发模式、三层架构&MVC练习学生信息管理系统

    本文将介绍MVC设计模式、JSP开发模式、三层架构和MVC练习的基本概念,并演示如何使用这些技术来构建一个学生信息管理系统。该系统将包括数据库准备、查询、增加、删除、更新和分页功能。 MVC是一种软件架构模式,将应用程序分为三个部分:模型(Model)、视图(View)和

    2023年04月25日
    浏览(94)
  • JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener

    实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化。 必须有对应的get/set方法 用来和数据库的字段做映射 ORM; ORM:对象关系映射 表---类 字段--属性 行记录----对象   Filter:过滤器,用来过滤网站的数据 处理中文乱码 登录验证.... 弄一个过滤器的demo 空maven+web项

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包