【MarketAnalysis总结】1.0分层体系架构

2024-03-23 14:32

本文主要是介绍【MarketAnalysis总结】1.0分层体系架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MarketAnalysis项目十二月份已经全部完工了,之后一直忙于期末考试和其他课设,一直没把总结放上来;为了笔记不遗失也方便以后查找还是放上来吧。

这次项目,我花了比较多的心血在这上面,完整地跟进了整个项目,从开题之后每个阶段都紧跟着团队的脚步,也推动着团队往前走。在这个过程中,我收获了很多项目经验,不止是从技术层面,对于现有的web的技术从底层到最新都有个大概的了解了,更从团队合作中的获取了团队经验,包括项目管理的git使用以及体会到了分层体系架构给我带来的好处,还有日常与队友如何对接,沟通交流的经验,可以说是真的受益匪浅。

我在本次项目中负责的后端的工作有搭建Spring框架、搭建SpringMVC框架、从Strut2+Spring+Hibernate到SpringMVC+Spring+Hibernate的整合、对项目进行层次体系结构设计分层、用户权限控制、用户账户安全访问控制以及发送手机验证码模块。

我会把每一部分的工作都一一总结,这里先介绍对项目进行分层体系结构设计。

该项目通过SSH框架搭建,项目结构如下图1.1所示。



图1.1 项目框架图

后端之所以这样分层,原因在于把项目解耦,把模型、视图、控制分开,独立工作,方便团队合作编码与整合。其各层详细的作用描述如下:

1)   Controller(控制层)

控制层是整个项目的指挥中枢,主要控制页面间的跳转,接收前端的请求并分发请求,以及前后台数据的传输。前端所有的请求,都要汇集先到该层,再由控制层统一把需求分发到对应的业务逻辑层获取相应的服务,处理完毕后再经过控制层回复给前端。

前端请求到后端处理并返回的实现流程如下:

a)   前端通过url向后端发来请求以及数据,后端一直处在待接收请求的状态;

b)   通过匹配url分发到后端controller的一个函数,对该请求进行处理;

c)   所匹配的函数调用Service层对应的服务并处理加工数据后,Service层向controller返回一个结果,再由controller应答前端。

  • Interceptor(拦截层)

拦截层是在Controller层之前的一层,它可以在某些特定的请求(可以自己设计)到达控制层之前拦截下来,对其进行权限校验、身份校验、合法性检查、避免过量请求涌入等操作。

在本次项目中,拦截层主要做了对下载权限、查询权限的校验、是否在登录状态访问的控制、以及检查前端请求是否合法的工作。每一个功能分别如下图1.2对应的DownloadInterceptor、QueryInterceptor、LoginInterceptor和AfterLoginInterceptor、IndexInterceptor五个类。


图1.2 拦截层

2)   Service(业务逻辑层)

业务逻辑层也称服务层,是控制层的下一层,负责接收来自控制层分发的需求,为其提供相应的服务的,例如数据加工处理。

Service层负责的工作流程如下:

a)   控制层调用service层相应的服务,并传入要处理的原始数据;

b)   Service层接收到原始数据,开始对数据进行加工,调用DAO层提供的接口,对数据库进行操作;

c)   处理完毕后返回加工后的数据给controller。

3)   DAO(数据库访问层)

数据库访问层顾名思义是负责对数据库访问的操作的,是Service层的下一层。它不包含业务逻辑,主要封装了对数据库的连接、关闭、增删查改等操作,以便给它的上一层Service提供相应的数据库服务,是较底层的一层。

4)   Cache(缓存层)

缓存层主要负责对已查询过的数据进行缓存,并定时刷新。该层的作用是解决对大量数据的查询有很大的时间开销问题。

5)   Entity(实体层)

实体层是最底层的一层,直接对应数据库的表。该层封装着每张表的Javabean(对应着一个个类),以及对应的映射配置文件。它负责把数据库里的表映射到Javabean,以便DAO对数据库操作。

至此,我详细地介绍了每一层的作用,以及为什么这样分层。由于前端的各层作用不是我负责的范围,故在此不做过多赘述。






这篇关于【MarketAnalysis总结】1.0分层体系架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838598

相关文章

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

Java资源管理和引用体系的使用详解

《Java资源管理和引用体系的使用详解》:本文主要介绍Java资源管理和引用体系的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Java的引用体系1、强引用 (Strong Reference)2、软引用 (Soft Reference)3、弱引用 (W

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA