【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

相关文章

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总