导读:在结束了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在IIS8中设置默认编码(windows2012服务器)

    web.config中配置 <?xml version="1.0" encoding="UTF-8"?> <configuration> ...

  2. 停止某个机房所有机器上包的脚本 pack_idc_stop.py

    一.初衷: 鉴于公司的进程包package都是冗余多点部署的,一般一个idc机房有多台机器部署同一个package.当机房网络出问题的时候,我们不得不查到本机房部署了哪些package,并在包发布系统 ...

  3. Windows 32 程序设计

    C语言版 开发语言:C语言 开发工具:Visual Studio 2015 目      标:使用C语言,直接调用Windows API,创建Windows程序. 参考图书:<Windows程序 ...

  4. Informix 中执行多条SQL(Execute Script)

    有的时候我们需要在ADO.NET中同时执行多条的SQL语法,我们要如何处理, 例如下: //查詢基本資料 private static void TestQry() { DataTable dtRet ...

  5. 解决mysql"Access denied for user'root'@'IP地址'"问题

    在另一台服务器使用 MySQL-Front链接时: 解决方法: 在MySQL服务器上使用root登录后,执行如下SQL语句: mysql 登录命令: >mysql -u root -p; 然后执 ...

  6. 使用maven构建一个helloworld maven项目

    1.下载maven http://maven.apache.org/ 选择一个较新版本下下来 2.配置m2_home环境变量 先解压,新建用户变量m2_home,将bin目录添加到path变量中 3. ...

  7. [ActionScript 3.0] AS3 Socket安全沙箱策略文件

    当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则: 1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接: 2.一个从网上发布的. ...

  8. Servlet中的请求转发和重定向

    跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...

  9. myBatis实例

    一.搭建环境, 建立数据库 CREATE TABLE user( id ) not NULL AUTO_INCREMENT, userName ) DEFAULT NULL, userAge ) DE ...

  10. gomoblie flappy 源码分析:图片素材和大小的处理

    flappy的源码可以在 https://github.com/golang/mobile 看到.具体在 https://github.com/golang/mobile/tree/master/ex ...