【SSH2框架(理论篇)】--SSH2 Vs 经典三层
这几天一直在学习使用SSH2框架。对于框架本身的使用并非非常困难。相信经过多锻炼就行熟练的掌握框架的使用,让我匪夷所思的是在使用框架的时候感觉非常熟悉,好像在哪里用过似得。
就在某次查看代码的时候突然闪现了一个想法,SSH2框架和经典三层非常相似。当然经过翻阅资料发现我的想法还是有理论根据的,接下来将会证实该猜想。
一、SSH2初识
我们通常所说的SSH2框架事实上是有三种框架集成的。它们各自是基于MVC模式的Struts2框架和基于IoC模式的 Spring框架以及对象/关系映射框架Hibernate,之所以会产生这么框架是由于J2EE的诟病,由于J2EE的多层结构过于复杂,想要更加效率的开发大型的J2EE项目就必须运用其他的框架和设计模式来整合这样的多层结构提高软件的质量。
Note:框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。
想要深入了解SSH框架就必须来看看它的框架图。从它的框架图上来讨论分析它的运行过程。例如以下图为SSH框架的基本结构图。
系统的基本业务流程:在表示层中。首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response)。然后Struts依据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给对应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完毕业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中。则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据。并返回处理结果。
具体的内部框架的请求过程会在下篇博客中具体讨论。
二、SSH2 Vs 经典三层
先来回想下经典的三层架构,在开发时为了实现程序解耦的目的,我们把程序分成了三个层次。各自是显示层(User Show Layer)、业务逻辑层(Business
Logic Layer)、数据持久层(Data Access Layer)。这是最基础的开发架构,也就是将程序依照我们通常理解的那样拆分开,每一层仅仅专注一种事物,这样每一层仅仅要实现对应的接口就能非常好的减少了程序集之间的耦合。
Note:在有的教程中三层架构可能会有实体层(Entity
Layer),事实上它是三层中的參数。各层之间进行參数传递时须要採用的即为实体层中的表实体。
联系经典的三层我们不难看出SSH2框架的实现事实上就是经典的三层结构。仅仅只是在三层结构中的每一层中集成的是单独的框架,尤其是在表示层中採用的是基于MVC模式的Struts2来配置,当页面进行请求后Struts会依据配置文件(Struts2中为Struts2.xml)将ActionServlet接收到的Request请求托付给对应的Action处理。
然后在业务层中,管理服务组件的Spring IoC负责向Action提供业务模型(Model)组件等来完毕业务逻辑。
而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
结语
通过上面的对照不难发现事实上SSH2框架採用的是经典的三层模式。将J2EE分层结构进行了良好的整合,在开发时非常方便。可是对于每一个框架的内部运行机制没有做过多的讨论。相信在理解上可能会有非常多疑惑。为了解决疑惑,将会在下篇文章中重点讨论Struts、Spring、Hibernate框架的内部运行机制。
【SSH2框架(理论篇)】--SSH2 Vs 经典三层的更多相关文章
- 【SSH2(理论篇)】--Struts2配置具体解释
上篇博客讨论了SSH2框架模型,在开发过程中发现SSH2的开发模型事实上类似于经典的三层模式,在每一层中分别加入了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置 ...
- 【SSH2(理论+实践)】--Hibernate步步(一个)
前几个博客讨论SSH2该框架Struts,它代表层,集成封装.和使用WebWork作为核心处理,依赖映射是它的处理核心.在使用时需要Struts.xml配置相应Action和Interceptor够完 ...
- SSH2框架搭建 和 配置文件详解
-----------补充说明----------- 文章中所列出的struts2的2.2jar包已经不是最新的了,这个版本有严重漏洞, 现在最新版本为2.3.15,所以.你懂的http://stru ...
- ssh2框架搭建
原文:ssh2框架搭建 struts2+spring4.0+hibernate4.0 4.x版本与3.x版本有较大区别,要配置方法须要注意,用到的jar包如下 文件结构 src/application ...
- 游戏UI框架设计(一) : 架构设计理论篇
游戏UI框架设计(一) ---架构设计理论篇 前几天(2017年2月)看到一篇文章,国内王健林.马云等大咖们看好的未来十大最有"钱途"产业中,排名第一的就是"泛娱乐&qu ...
- SSH2框架实现注冊发短信验证码实例
这两天開始写程序了,让用SSH2框架,曾经没有接触过Java项目更没有接触过SSH2框架,所以用注冊開始了我Java之旅.后来发现,后台代码挺easy理解的,跟.net的差点儿相同.就是层与层之间的调 ...
- MVC框架模式和Javaweb经典三层架构
一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...
- 【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md
前言 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API).那TCP/IP又是什么呢?TCP/IP是ISO/OS ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
随机推荐
- C++_class_powerpoint_1.1
Types and Declarations Boolean Type bool type – boolean , logic type bool literal – true, falseint a ...
- javascript设计模式-掺元类
有一种重用代码的方法不需要用到严格的继承.如果想把一个函数用到多个类中,可以通过扩充的方式让这些类共享该函数.其实际做法大大体为:先创建一个包含各种通用方法的类,然后再用它扩充其他的类.这种方式就叫做 ...
- numpy快速指南
Quickstart tutorial 引用https://docs.scipy.org/doc/numpy-dev/user/quickstart.html Prerequisites Before ...
- ubuntu-设置分辨率
xrandr -s 1440x900 -r 60 前提是,分辨率选项中有对应的设置选项.
- C# 添加应用程序包
项目中可能会遇到某些扩展方法不可以应用的情况,这时候需要在项目中引用程序包 步骤如下: 回车即可
- javascirpt之 this、apply、call、bind
this.apply.call.bind 这又是一个面试经典问题~/(ㄒoㄒ)/~~也是 ES5中众多坑中的一个,在 ES6 中可能会极大避免 this 产生的错误,但是为了一些老代码的维护,最好还是 ...
- 修改ElementUI源码
1.克隆ElementUI官方仓库代码到本地 https://github.com/ElemeFE/element 2.在cmd命令行安装依赖 1)找到代码文件夹 cd element 2)npm ...
- Angular CLI 启动 版本ng 4
npm install -g angular-cli ng -v ng new project_name cd project_name ng serve 浏览器打开输入 localhost:4200
- 杭电2061WA 01
#include<stdio.h> struct mem { char s[50]; double c; double f; }; int main() { struct mem x[60 ...
- 【从零开始】【Java】【2】项目最开始都有什么鬼
闲聊 刨其根知其底. 让我们从一开始就慢嚼细咽. 开始 先来看下项目都有什么: 项目结构图 pom文件图 项目结构 项目=核心代码+依赖管理文件+说明文件+IDE配套文件+外部依赖包: 核心代码:sr ...