导读:在结束了BS之后,接触到的第一个项目算是网上商城了。这次用到了和之前都不一样的框架:SSH。这个项目就和之前学牛腩一样,有着里程碑的意义。当然了,这也就意味着,什么都是新鲜的,接触到的东西,有时候压根儿就不知道是怎么回事儿,但结合牛腩的经验来看,这其实并没有什么大问题,将基础理解了就行。接下来,就介绍一些SSH框架的基础概念。

一:什么是SSH

SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其架构图为:

集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data
Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。

SSH 框架的具体流程为:

当浏览器发出请求i,首先是由Struts通过配置文件将ActionServlet接收到的请求委派给相应的Action处理,然后经过Spring IOC容器负责调用业务层组件(4)和数据持久层组件(5)完成业务处理,以及对应的数据持久化。而在数据持久层中,采用Hibernate对象映射处理数据并返回结果。

二、用三层的眼光看SSH

在SSH框架中,依旧可以东西出三层的影子。结合到上面的SSH流程图,我们可以大致划分出这样的几个类型:JSP页面,Action,Service,Dao,Struts、Spring。那么用三层来划分则是:UI层(JSP页面、Action模型)、BLL(Service/FormBean)、DAL(Dao/JavaBean),B层和D层和三层并没有明显的区别。那么SSH和三层的不同点在哪儿呢,我认为是:

在三层中,UI层直接调用B层,通过entity传参。而在SSH中,一个做好的页面,首先需要调用Action处理器,在Action中调用Service,进而由Service调用Dao。而传参,则是通过模型驱动。在调用Action的时候,是通过Struts的配置而决定具体调用哪一个Action,不对,或者说一个Action通过Struts配置调用哪一个页面更为合适(依赖倒转),而在三层中,但我们需要调用B层时,是使用New关键字,新建一个对象,而在SSH里面,而是通过Spring注入的形式而定。

三、总结

SSH框架在刚开始接触的时候,其实还是比较陌生的,但如果用学过的知识去解释它的时候,又变得不那么困难。在理解这个SSH框架的时候,上面的两张图给我很大帮助,有时候通过文字难理解的时候,不妨画张图出来帮助理解,更为形象化。

【SSH 1】SSH框架的基本理解的更多相关文章

  1. 第1章 ssh和SSH服务(包含隧道内容)

    本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机. 另外,本人翻译了ssh客户端命令的 ...

  2. [转]ssh和SSH服务(包含隧道内容)

    本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机. 另外,本人翻译了ssh客户端命令的 ...

  3. ssh和SSH服务(包含隧道内容)

    ssh和SSH服务(包含隧道内容) 72.16.10.6:/etc/fstab-->/172.16.10.3:/tmp/a.txt. [root@xuexi ~]# scp 172.16.10. ...

  4. 烂泥:学习ssh之ssh密钥随身携带

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 在上一篇文章<烂泥:学习ssh之ssh无密码登陆>中,我们讲解了如何使用ssh密钥,免密码登陆服务器. 这篇文章我们再来讲解,如何把已经生成的 ...

  5. 烂泥:学习ssh之ssh无密码登陆

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 最近一个月没有写过文章,主要是刚刚换的新工作.新公司服务器OS使用的是ubuntu server版,和以前熟悉的centos还是有很多不同的. 刚好这几天 ...

  6. VPN指定某个程序,其实是改路由表(赛风支持VPN和SSH和SSH+模式)

    其实就是使用IE代理的意思,方法有很多.最简单的就是读取注册表中的代理信息.具体找;\Software\Microsoft\Windows\CurrentVersion\Internet Settin ...

  7. SSH WebShell: SSH在线WEB管理器安装教程 - VPS管理百科

    SSH WebShell: SSH在线WEB管理器安装教程 - VPS管理百科 SSH WebShell: SSH在线WEB管理器安装教程 本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协 ...

  8. 浅谈Cordova框架的一些理解

    前言 因为工作原因,最近需要研究Cordova框架,看了其中的源码和实现方式,当场在看的时候马上能理解,但是事后再回去看相关源码时候却发现之前理解的内容又忘记了,又不得不重新开始看,所以总觉得需要记录 ...

  9. man ssh翻译(ssh命令中文手册)

    本文为命令ssh的man文档翻译,翻译了90%的内容,剩余是一些没必要翻译的东西,请见谅. 如此文有所疑惑,希望我的另一篇文章能解惑: SSH(1)                    BSD Ge ...

随机推荐

  1. MSSQL学习笔记

    阅读目录 1.什么是SQL语句 2.使用sql语句创建数据库和表 3.创建数据表 4.数据完整性约束 5.四中基本字符类型说明 6.SQL基本语句 7.类型转换函数 8.日期函数 9.数学函数 10. ...

  2. hibernate 大对象映射

    1. 在pojo类中 用Blob类和Clob public class Student { private int id; private String name; private int age; ...

  3. WebADI_Oracle ERP R12使用前WebADI设定(案例)

    2014-12-25 Created By BaoXinjian

  4. NeHe OpenGL教程 第十五课:纹理图形字

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. zabbix安装,关闭SELinux

    一.缘由 在安装zabbix的时候,按照官网的Zabbix Manual一路跑下来,zabbix的dashboard提示:zabbix server is not running the inform ...

  6. Python 结巴分词(2)关键字提取

    提取关键字的文章是,小说完美世界的前十章: 我事先把前十章合并到了一个文件中: 然后直接调用关键字函数: import sys sys.path.append('../') import jieba ...

  7. jQuery部分源码帮助理解

    (function(window){})(window) 为什么要传window给jquery当参数呢? 1.为了压缩有 引用 2.加速变量的寻找,当找window对象的时候,默认从本级开始寻找,一级 ...

  8. Python标准库08 多线程与同步 (threading包)

    Python主要通过标准库中的threading包来实现多线程.在当今网络时代,每个服务器都会接收到大量的请求.服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率.Python是一种 ...

  9. DSS 搭建手机流媒体服务器

    最近研究了一下手机流媒体服务器的搭建,目的是实现通过3G手机看在线视频. 开始的时候研究了一下 Tudou手机版 ,可它哪并没有实现在线播放,因为视频地址是 http 协议的.参看了许多文章,终于了解 ...

  10. 用 <a> 实现 <form> 表单的提交

    <form action="{:U('Index/fwbhss')}" method="post" id="tform" name=& ...