当前位置: 首页 > news >正文

SpringMVC框架学习

java 学习笔记指路
基础知识

Python转java补充知识
Java中常见的名词解释

前端

【黑马程序员pink老师前端】HTML
【黑马程序员pink老师前端】JavaScript基础大总结
【黑马程序员pink老师前端】JavaScript函数与作用域
【黑马程序员pink老师前端】JavaScript对象

数据库

【黑马程序员数据库】数据库基础大总结
【黑马程序员数据库】数据库引擎
【黑马程序员数据库】数据库索引

SQL编程

【牛客】SQL刷题篇入门篇
【牛客】SQL刷题篇进阶篇

Java 框架

spring框架学习
SpringMvc框架学习
SpringBoot 框架学习
Mybatis-plus 快速入门
Maven基础
Zookeeper初认识
HTTP简介
Tomcat
Servlet
vue入门

目录


SpringMvc框架中的Controller层、Service层、Dao层关系和作用

  • dao(数据访问层):负责与数据打交道。通过Spring配置文件与数据库进行连接,封装了对数据库进行增删改查的基本操作。
  • service(服务层):建立在dao层上面,controller下面,提供服务。对一个dao或多个dao进行再次封装,封装成一个服务类。
  • controller(业务层):负责各个模块的管理控制;负责url映射地址。管理用户操作,根据用户请求来调用对应服务以便完成请求处理等;对service进行调用。

其中dao与service层在开发中,需要先进行接口的设计,接着再设计实现接口的类。

之所以这样会是因为会更符合MVC模式的理念,也符合大多数人的编程习惯,并且极大减少了开发的工作量,使其后期维护也较为轻松,更为重要的一点是可以极大地保障数据的安全,防止controller层对数据库直接进行操作。

Controller:接收参数,告诉Service层我要增、删、改这个角色,并且返回结果
service:负责处理增、删、改角色的逻辑,也就是增、删、改完角色还要增、删、改用户
Dao:负责把Service交代的东西真正的增、删、改掉

Service层是建立在Dao层之上的,建立了Dao层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用Dao层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。

Controller层

Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

Controller层负责具体的业务模块流程的控制,在此层要调用Service层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里进行,针对具体的业务流程,会有不同的控制器。我们具体的设计过程可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块。这样不仅使程序结构变得清晰,也大大减少了代码量。

Service层

简单来说就是对一个或多个Dao进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。

Service层主要负责业务模块的应用逻辑应用设计。同样是首先设计接口,再设计其实现类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实,具体要调用已经定义的Dao层接口,封装Service层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。程序显得非常简洁。

Dao层

Dao层属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个Dao一定是和数据库的某一张表一 一对应的,其中封装了增删改查基本操作,建议Dao只做原子操作,增删改查。

负责与数据库进行联络的一些任务都封装在此,Dao层的设计首先是设计Dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,Dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。

框架和 mybatis之间的关系

http://www.lryc.cn/news/156911.html

相关文章:

  • 多通道振弦数据记录仪应用桥梁安全监测的解决方案
  • RDMA 相关bug记录
  • TDengine函数大全-时序库特有函数
  • vue-cli3项目本地启用https,并用mkcert生成证书
  • 包装类笔记
  • TC和TG油封有什么区别?
  • 大数据之MapReduce
  • 《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5
  • 嵌入式面试/笔试C相关总结
  • 支付宝使用OceanBase的历史库实践分享
  • accelerate 分布式技巧(一)
  • 密码找回安全
  • Spring Boot + Vue的网上商城之商品管理
  • B站:提高你的词汇量:如何用英语谈论驾驶
  • 大前端面试注意要点
  • 稻盛和夫-如是说(读书笔记)
  • Jmeter是用来做什么的?
  • Docker基础教程
  • Linux命令200例:who用于显示当前登录到系统的用户信息
  • HGDB-修改分区表名称及键值
  • 1分钟了解音频、语音数据和自然语言处理的关系
  • 线性代数的学习和整理20,关于向量/矩阵和正交相关,相似矩阵等
  • OpenCV之ellipse函数
  • git快速查看某个文件修改的所有commit
  • 加强版python连接飞书通知——本地电脑PC端通过网页链接打开本地已安装软件(调用注册表形式,以漏洞扫描工具AppScan为例)
  • Jmeter进阶使用指南-使用断言
  • 44、Flink之module模块介绍及使用示例和Flink SQL使用hive内置函数及自定义函数详细示例--网上有些说法好像是错误的
  • 电脑入门: 路由器初学者完全教程
  • 如何查找GNU C语言参考手册
  • 弄懂软件设计模式(一):单例模式和策略模式