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.mzph.cn/news/71518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nowcoder NC10 大数乘法

题目链接: https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571?tpId196&tqId37177&rp1&ru/exam/company&qru/exam/company&sourceUrl%2Fexam%2Fcompany&difficultyundefined&judgeStatusundefined&tags&tit…

HJ17 坐标移动

Powered by:NEFU AB-IN Link 文章目录 HJ17 坐标移动题意思路代码 HJ17 坐标移动 题意 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,…

python使用cv2获取截图中的匹配项目的中心位置

在OpenCV中,cv2.matchTemplate()函数用于在大图中查找与小图(模板)匹配的区域,但并不会直接返回一个区域的box。 想要获取匹配区域的边界框(box),以及中心的位置,这样后续好进行自动…

222. 完全二叉树的节点个数

题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 我的想法: 递归法 万金油--层次遍历法 当然上面两中都是笨方法,就算不是完全二叉树也能算,没有用到完全二叉树的特性。 我的代码&#xff1…

linux线程讲解

1.线程概述 一个进程在同一时刻只做一件事情,进程是程序执行的一个实例。 线程是操作系统能够进行运算调度的最小单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 进程:资源分配的最小单位。线程,程…

50etf期权最多能开仓多少手?

50etf期权限仓限额的操作,是为了能更好防范和控制期权交易的风险,无论是期货还是期权,在交易中都有规定的持仓限额,不能超过某个额度,那么50etf期权最多能开仓多少手?下文为你们全面介绍!本文来…

【数据结构】单链表详解

当我们学完顺序表的时候,我们发现了好多问题如下: 中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当…

纯手工总结超详细关于计算机网络的五层知识点,看看你都掌握了没

纯手工总结超详细关于计算机网络的五层知识点,看看你都掌握了没 文章目录 纯手工总结超详细关于计算机网络的五层知识点,看看你都掌握了没1.应用层1.1 HTTP协议1.1.1 URL1.1.2 HTTP方法1.1.3 HTTP请求1.1.4 HTTP状态码1.1.5 HTTP会话保持 1.2 HTTPS协议 …

Linux上安装FTP

1、登录FTP,执行安装命令 yum -y install vsftpd 2、启动FTP服务器,设置开启自启动 systemctl enable vsftpd.service systemctl start vsftpd.service systemctl status vsftpd.service #查看状态, 显示active说明FTP启动成功 3、修改FTP配置文件/et…

数据通信——传输层TCP(可靠传输机制的滑动窗口)

引言 之前提到过拥塞问题,如果大量数据疯狂涌入,接收端无法及时处理就会导致数据丢包,从而使得通信受到干扰。之前的连续ARQ如果不加以节制,疯狂发送报文,接收端无法及时返回ACK就会导致网络瘫痪。 滑动窗口机制协议 这…

【未写完】笔记本电脑Windows7怎么省电

2023年9月7日,周四晚上 从2022年到2023年9月7日这期间,我断断续续研究了一个月这个问题。 到如今终于有所收获,于是把这些记成一篇博客。 不定期更新,因为最近开学了,比较忙。 首先,根据我的实践&#x…

阿里云部署开源MQTT平台mosquitto的docker操作

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛用于物联网和传感器网络中。Mosquitto是一个流行的开源MQTT代理,可以在Docker中进行配置和部署。本文将详细介绍如何在Docker中配置Mosquitto MQTT代理…

maven打包时显示无效jdk版本

1、配置当前项目所需的Jdk版本 2、与当前项目指定的jdk版本相同 3、与当前项目指定的jdk版本相同 4、与当前项目指定的jdk版本相同 5、指定主项目启动时的vm配置与当前项目所需版本相同

Stable Diffusion — ControlNet 超详细讲解

Stable Diffusion — ControlNet 超详细讲解 ControlNet 最近非常火🔥!ControlNet 和 Stable Diffusion 的结合使 Stable Diffusion 能够接受指导图像生成过程的条件输入,从而增强了 Stable Diffusion 的性能。今天为大家深入剖析 ControlNe…

算法通关村十四关:白银挑战-堆能高效解决的经典问题

白银挑战-堆能高效解决的经典问题 1.在数组中找第K大的元素 LeetCode215 https://leetcode.cn/problems/kth-largest-element-in-an-array/ 思路分析 主要解决方法有3个,选择法,堆查找法和快速排序法 方法1:选择法 先遍历一遍找到最大的…

如何让自己的精力集中 Maven自学笔记 马云演讲观看

目录 如何让自己的精力集中 Avoid having multiple tasks and objects in your line of sight 人的脑袋是给自己思考用的 晚上床上想千条路,早上起床还是走原路 参与才会变得更好 共度灾难,是需要互相鼓励的 CFO Capital 上海各区都有哪些大学?…

git快速查看某个文件修改的所有commit

1. git blame file git blame 可以显示历史修改的每一行记录,有时候我们只想了解某个文件一共提交几次commit,只显示commit列表,这种方式显然不满足要求。 2.git log常规使用 (1)显示整个project的所有commit (2)显示某个文件的所有commit 这是git log不添加参数的常规…

学习的心得

文章目录 第一节课心得**学会了敲写数学公式** 第一节课心得 老师讲得非常好,我们下载了xmind,如何制作思维导图 学会了敲写数学公式 ∫ 10 20 ( x 2 − 3 x 2 ) d x \displaystyle\int_{10}^{20}(x^2-3x2)dx ∫1020​(x2−3x2)dx

注解 + spring aop切面+ SpringEl

定义注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface FlowStart {/*** 流程类型*/String flowType();/*** uuid*/String uuid();/*** 是否删除原来流程*/boolean deleteOld() default false; }定义切面 /*** 流程启动切面* author Guo…

《算法竞赛·快冲300题》每日一题:“直径点对”

《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 直…