导读:在结束了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. 黄聪:wordpress源码解析-数据库表结构(转)

    如果是一个普通的用户,不需要了解wordpress数据库的结构.但是,如果你正在写一个插件,你应该会对wordpress如何处理它的数据和关系感兴趣.如果你已经尝试使用已经存在的wordpress a ...

  2. (VS) TFS lost mapping suddenly.

    家里的网络不是很稳定.今天突然发现 TFS 上所有的 mapping都突然没有了. 尝试去remapping,在Source Control Explorer 中右击源文件,然后选择 Advanced ...

  3. BIP_开发案例08_BI Publisher图表示例 饼状图/直方图/折线图(案例)

    2014-12-25 Created By BaoXinjian

  4. T4批量生成多文件

    http://www.cnblogs.com/zengxiangzhan/p/3250105.html Manager.ttinclude <#@ assembly name="Sys ...

  5. SteamVR Unity工具包(VRTK)之控制器交互

    可交互对象(VRTK_InteractableObject) 可交互对象脚本被添加到需要用(如控制器)来交互的任何游戏对象上.   可用脚本参数如下   Touch Interactions 触摸交互 ...

  6. 子iframe 怎么调用 父级的JS函数

    window.parent.父级函数名();

  7. Yii 2.0 单文件上传

    先创建一个(UploadForm.php)模型层 <?phpnamespace app\models; use yii\base\Model;use yii\web\UploadedFile; ...

  8. C++学习27 用全局函数重载运算符

    运算符重载函数既可以声明为类的成员函数,也可以声明为所有类之外的全局函数. 运算符重载函数作为类的成员函数 将运算符重载函数声明为类的成员函数时,二元运算符的参数只有一个,一元运算符不需要参数.之所以 ...

  9. Android--Intent的使用

    1.Activity之间的切换通过Intent来完成. 1)清单文件,配置好Activity,所有Activity都需要在该文件中配置. <?xml version="1.0" ...

  10. .atomic vs volatile

    结论: atomic比volatile靠谱 java.util.concurrent.atomic.Atomic*原子类和volatile关键字是java中两种常见的处理多线程下数据共享读写的机制.二 ...