【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学习总结 ...
随机推荐
- tp框架---表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册“自动验证”一章. 一.静态验证 ( ...
- Kaggle爆文:一个框架解决几乎所有机器学习问题
上周一个叫 Abhishek Thakur 的数据科学家,在他的 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Proble ...
- A - Kefa and First Steps
Problem description Kefa decided to make some money doing business on the Internet for exactly n day ...
- 测试数据准备中用到到csv写文件知识点
对于大数据测试中,有时需要自己去准备一些数据,用csvreader来写一个比较大的文件就比较方便,下面我就直接贴示例代码了: package com.acxm.amysu.test;import co ...
- Kafka 分布式消息系统详解
实际上kafka对机器的需求与Hadoop的类似. 原来,对于Linkin这样的互联网企业来说,用户和网站上产生的数据有三种: 需要实时响应的交易数据,用户提交一个表单,输入一段内容,这种数据最后是存 ...
- Arduino UNO R3
Arduino 常见型号 当然还有 LilyPad,附图: 最常见的自然是UNO,最新版是第三版R3: 国内也有一些改进的板子.我用的是一般的板子,拿到货也只能默默了. 简介 The Uno is a ...
- C++:数据流和缓冲区
(1):C++之自定义的input缓冲区 原文链接:http://hi.baidu.com/nicker2010/item/d0c4cd2a7caf27c4ddf69aeb input stream用 ...
- H5动效的常见制作手法
众所周知,一个元素,动往往比静更吸引眼球: 一套操作界面,合适的动态交互反馈能给用户带来更好的操作体验: 一个H5运营宣传页,炫酷的动画特效定能助力传播和品牌打造. 近两年,小到loading动画,表 ...
- PAT-树的同构
链接 树的同构 题意 同构的定义: 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的. 给两棵树,判断是否同构 做法 先建树,然后判断,知道怎么判断就知道 ...
- WebStorm 配置 svn
1.下载 SlikSVN. 2.安装.路径 D:\Program Files\slik\bin. 3.在WebStorm中配置 file->settings->Version Co ...