Java项目分层

article/2025/10/30 5:51:27

MVC模式

在实际的开发中有一种项目的程序组织架构方案叫做MVC模式,按照程序 的功能将他们分成三个层,如下图:Modle层(模型层)、View层(显示层)、Controller层(控制层)。

 

Modle层:可以分两层,DAO层、service层,基本功能 如下

service层:主要去负责一些业务处理,比如取得连接、关闭数据库连接、事务回滚,一些复杂的逻辑业务处理就放到service层。Service层的业务实现,具体要调用到已定义的DAO层的接口。封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性。

DAO层:负责访问数据库进行数据的操作,取得结果集,之后将结果集中的数据取出封装到VO类对象之后返回给service层DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。

Cotroller层:叫做控制层,主要的功能是处理用户发送的请求。

View层:叫做显示层,主要是负责显示数据。

在实际开发中dao层要先定义出自己的操作标准即标准接口,就是为了解耦合。

Action/Service/DAO简介

Action 管理业务(Service)调度和管理跳转

Service 具体的业务功能

Action只负责管理,而Service负责实施

DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。

总结这三者,通过例子来解释:

Action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;

Service是厨师,action送来的菜单上的菜全是ta做的;

Dao是厨房的小工,和原材料打交道的事情全是ta管。

Action层可以理解为上面的Controler层

三层架构

View层(表示层)、Service层(业务逻辑层)、Dao层(数据访问层)

 MVC与三层架构的区别

MVC强调的是视图和业务代码的分离。严格的说MVC其实关注的是Web层。View就是单独的页面,如JSP、 HTML等, 不负责业务处理,只负责数据的展示。而数据封装到Model里,由Controller负责 在V和M之间传递。MVC强调业务和视图分离。

三层架构是“数据访问层”、“业务逻辑层”、“表示层”,指的是代码之间的解耦,方便维护和复用。


http://chatgpt.dhexx.cn/article/uQbLxN3q.shtml

相关文章

java项目收获总结_java开发项目收获心得

1 java开发项目收获心得 it行业现在的发展如日中天,很多人都纷纷走进这个行业,而java作为跨平台的编程语言更是受欢迎。java其实相对其他语言来说的确很有优势,但是也有点缺陷,但是以后发展到什么程度,谁都不知道。那么下面小编给大家说说java开发项目收获心得,希望能对你…

java查看jar包依赖_java项目开发中如何查找到项目依赖的jar包?

不管是java普通工程,还是java web项目,甚至是android项目,依赖包的管理有2种: 1.直接依赖jar包 这种方式简单直白,项目下载后在正确的ide或者稍微做转换就可以运行起来。比如java web工程的WEB-INF/lib下 只要按这个步骤Java Build Path=>Add Libraty=>Web App Libr…

Java小白必看:开发一个编程项目的完整流程(附100套Java编程项目源码+视频)

我相信很多Java新手都会遇到这样一个问题:跟着教材敲代码,很容易;但是让他完整的实现一个应用项目,却不会;不知道从哪里开始,不知道实现一个项目的完整流程是怎样的,看似很简单的一个问题&#…

分享67套基于Java开发的Java毕业设计实战项目(含源码+毕业论文)【新星计划】

【新星计划】分享67套基于Java开发的Java毕业设计实战项目(含源码毕业论文) 基于Java开发的Java毕业设计实战项目 本文中的所有主题都来自互联网。如果您侵犯您的权利,请及时联系Blogger,博主将及时处理。 投诉邮箱:1919101926qq.com (没事…

分享一些我的学习方法

赖勇浩(http://laiyonghao.com ) 经常听到和看到一些前辈提起搞编程这一行最大的痛苦在于知识的更新太频繁,如同逆水行舟,不进则退,稍一松懈,就跟不上潮流。的确如此,既然身在 IT 界&#xff0c…

规划之路:SLAM学习经验分享

针对想学SLAM的提问,我觉得我还是有一定的发言权。 作为一个刚入坑SLAM一年多的初学者,首先想说的就是这个研究方向比较广,大方向按搭载传感器分为激光SLAM和视觉SLAM两种,激光SLAM搭载激光雷达,视觉SLAM搭载单目、双目…

学习经验分享之十三:如何撰写论文

一、文献积累 顶刊or顶会: AAAI: American Association for AI National Conference CVPR: IEEE Conf on Comp Vision and Pattern Recognition IJCAI: Intl Joint Conf on AI ICCV: Intl Conf on Computer Vision ICML: Intl Conf on Machine Learning KDD: Knowl…

学习经验分享【25】记录个人的一些学习体会(更新TensorBoard)

本博文将记录和分享个人的一些学习工作体会和踩过的坑,希望对大家能有帮助。 一、对比实验 用yolov5l.ymal和yolov5n.ymal文件,然后加载yolov5s.pt后,训练得到的模型效果极差(mAP差30%),重新训练后换为yol…

个人学习方法分享

hi,大家好,今天来分享一下,我的一些学习经验,希望对大家学习有帮助。 我的学习方法 学习计划 核心思想:把自己像产品一样打造,就像张一鸣经典语录:run company as a product 制定目标 首先学习需…

分享自己学英语的经验

其实学好英语对于一个人真的很有用,尤其是对工程师来说,各种文献资料,代码,最新的技术文章,太多是英文的了,一个典型的例子就是,作为一个程序员和外国客户做过培训,当其他同事英语没…

【学习经验分享NO.21】学习资料分享(持续更新)

本博客将收集整理人工智能深度学习相关资料,进行整理,供大家学习使用。如果有需要帮忙整理的请留言。将不断更新,请持续关注。 一、深度学习论文资料 链接:https://pan.baidu.com/s/18LO5df0dp9-IE8Z3aFyrPg 提取码:c…

学习经验分享之十:Pycharm

前 言:作Pycharm有社区版和正式版,初学深度学习算法的小伙伴可能会选择社区版,因为正式版只有30天试用期,但是在实际使用过程中,社区版会出现很多功能上的不足,比如无法网上连接服务器,以及其他…

个人学习经验

这是一个ubuntu上学习cv遇到的一些常见问题的帮助和解决方法。 有些东西我会慢慢往上面加 文章目录 创建新环境conda添加镜像源安装模块在jupyter中使用新环境在pycharm中使用新环境 使用scp命令传输文件使用mobaxterm连接服务器 转数据集标注格式anaconda上安装好用的插件使用…

学习经验分享之十一:硕士论文撰写心得

硕士论文由于需要学校提交教育部盲审,导致通过率并不能达到百分百。翟天临事件之后,盲评通过率明显变低一般按照学科分布来说,盲审通过率最低的是工学,通过了为69.9%,其次为哲学,通过率为73.8%,…

我的 C# 学习经验分享

.NET 20 周年的学习挑战赛刚结束了第一阶段, 不知道各位小伙伴参加了没有 ? 有人问现在学习 C# 是不是有点过时 ? 也有人问现在 C# 能做什么 ?更有人问学习 C# 能否找到工作 ? 或者你从不同的专家 ,不同的从…

分享学习语言的经验

在人类所制造的工具中,有的可以将人送上月球,有的可以驾驭原子的火焰,但是只有计算机软件才能透彻的返照出人类的心智。 --《Java与模式》 软件能够返照出人类的心智,那么计算机语言就是我们展现心智的基石。经常在一些论坛上和贴…

分享一些自己的学习经验和技巧

毕业两年多,工作三年多,技术水平也不是什么出类拔萃,万里挑一的地步,从最初的Java工程师,到产品,再到大数据,到最后的运维工程师,研发工程师,短短三年多,总是…

爬虫学习经验分享-------某点评网站

某点评网站爬虫分享----0基础学习,解决反爬,加密,ip代理,封ip“403 Forbidden”等问题。 最近有个调查的项目,其中包含了对于网络数据的爬取。而之前我并没学过网络爬虫,因此我也抱着学习的心态来学习如何爬…

前端学习总结,经验分享,项目经验分享过程

前言 来,和魔王哪吒总结一下,分享一下自己对前端学习总结,经验分享,以及写过的项目经验分享过程。 如果觉得还不错的话,浏览的过程中,需要您: 点赞,分享,评论有钱的捧…

方法教程:一分钟把网易云音乐上的MV/mv视频下载到本地电脑

1、用Google Chrome浏览器把网易云上的MV打开。点击【分享】-【复制链接】-粘贴到浏览器地址栏打开: 2、在视频旁边的空白处右击鼠标,打开【检查】: 3、打开界面后点击【Network】–【All】,然后刷新浏览器,让视频播放…