入行就听说SSH,起初还以为是一个东西,具体内容就更加不详细了,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本原理与思想,总算接地气了。想通过以博文的形式和大家一起分享,共同进步,在更新博文的过程中难免有认识不足的地方,还请各位大牛提出宝贵的建议,对于好的建议一定虚心接受,认真学习。

  这篇博文仅仅是SSH的开端简介,简单介绍一下SSH以及三种框架的整体概览,后面的博文会对各部分的内容一一进行详细的介绍。

  什么是SSH?

  官方的说法:SSH是Struts+Spring+Hibernate的一个jicheng框架,是目前较流行的的一种web应用程序开源框架。 个人见解:SSH不是一个框架,而是把多个框架(Struts,Spring,Hibernate)紧密的结合在一起,用于构建灵活,易于扩展的多层Web应用程序。

  SSH框架的系统从职责上分为四层:表示层,业务逻辑层,数据持久层和域模块层(实体层)。

  我们通过下面这张图说明一下,三种框架的关系以及所包含的内容,内容已经很详细了,在这里就不做过多的解释了。

  

  下面再详细看一下组成SSH的这三个框架。

  Struts

  1.什么是Struts?

  从简单性来看,Struts是这三个框架中中最简单的一个。它是基于MVC的框架。它通过采用JavaServlet/Jsp技术,实现了基于JavaEE web应用的MVC设计模式的应用框架,是MVC的一个具体实现或者说是MVC的一个具体产品。

  2.Struts的核心构成

  

  Struts的核心同样也是MVC的核心,Struts是MVC的一个具体产品。

  Model

  由Action,ActionForm以及JavaBean组成,其中ActionForm用于将用户请求的参数,封装成为ActionForm对象,我们可以理解为实体。由ActionServlet转发给Action,Action处理用户请求,将处理结果返回到界面。

  View

  该部分采用JSP+大量的taglib,实现页面的渲染。

  Controller

  Controller是Struts的核心控制器,负责拦截用户请求,通过调用Model来实现处理用户请求的功能。

  3.为什么使用Struts?

  使用Struts作为系统的整体基础架构,负责MVC分离,将页面从业务逻辑分离出来,使用页面更加灵活多变,不会影响业务逻辑,简化了基于MVC的web程序开发,因而使得开发更见高效。

  

  Hibernate

  1.什么事Hibernate?

  Hibernate是一个对象关系映射框架,它对JDBC进行了轻量级的封装,使得我们使用面向对象的思想操作关系型数据库。

  2.Hibernate的核心构成

  

  这部分内容不作过多的解释,上面导图中的解释已经很简单明了了。

  3.为什么使用Hibernate?

  (1)Hibernate是JDBC的轻量级的对象封装,它使得与关系型数据库打交道变得轻松自如。

  (2)对象化,它使得我们可以面向对象的思想操作关系型数据库,简化了DAO层编码工作,使得开发更加对象化了。

  (3)移植性更好,支持各种数据库,更换数据库异常简单,不需要改代码。

  (4)实现了透明持久化,没有实现第三方框架或接口,没有侵入性,十个轻量级框架。

  Spring

  1.什么事Spring?

  简单的说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

  2.Spring的核心构成

  

  IOC

  IOC就是IOC,不是什么技术,是一种设计模式。通过依赖注入的方式,由Spring管理和控制对象之间的依赖关系,避免硬编码所造成的过度程序耦合。

  AOP

  Aop通过预编译方式和运行期动态代理实现程序功能的同意维护的一种技术。

  容器

  能管理对象的生命周期,对象与对象之间的依赖关系就是容器。

  3.为什么使用Spring?

  没有Spring,Struts和Hibernate可以很好的运行,我称这样的模式为“独木桥”,但是有了Spring,Struts和Hibernate能够更好的结合在一起,协调工作。我称这种模式为“阳光大道”。Spring的核心是IOC和AOP,Spring使得管理对象更加方便,极大降低组件之间的耦合度。实现了软件各层之间的解耦。Spring的优点还有很多。

  总结

  SSH不仅实现了视图,控制器与模型的彻底分离,而且还是先了业务逻辑层与持久层的分离。耦合度降低,系统的灵活性更好,可复用性高。同时,框架为我们提供了一些基础性的服务,是我们的开发更加简单,大大的提高了开发效率。

Struts+Spring+Hibernate进阶开端(一)的更多相关文章

  1. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  2. Struts + Spring + Hibernate 进阶开端(一)

    Long Long ago,就听说过SSH,起初还以为是一个东东,具体内容更是不详,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基 ...

  3. Struts+Spring+Hibernate项目的启动线程

    在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...

  4. Struts,spring,hibernate三大框架的面试

    Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...

  5. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  6. Struts+Spring+Hibernate整合入门详解

    Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者:  Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念       St ...

  7. Struts+Spring+Hibernate、MVC、HTML、JSP

    javaWeb应用 JavaWeb使用的技术,比如SSH(Struts.Spring.Hibernate).MVC.HTML.JSP等等技术,利用这些技术开发的Web应用在政府项目中非常受欢迎. 先说 ...

  8. velocity+spring mvc+spring ioc+ibatis初试感觉(与struts+spring+hibernate比较)

    velocity+spring mvc+spring ioc+ibatis框架是我现在公司要求采用的,原因是因为阿里巴巴和淘宝在使用这样的框架,而我公司现在还主要是以向阿里巴巴和淘宝输送外派人员为 主 ...

  9. Struts+Spring+Hibernate处理Lob(Blob,Clob)

    在使用struts+spring+hibernate的开发中,有些时候用户会有数据库存储文件的需求,在数据库中一般会采用Blob字段或Clob字段来存储二进制图片.流媒体或文件.现就将在实际开发中遇到 ...

随机推荐

  1. mysql在linux的安装

  2. python之7-3对象的信息/方法获取

    我们可以用dir()来获取一个类,一个模块,一个字符串的信息/方法 例如: #可以列出Image模块的方法 >>import Image >>dir(Image) #列出字符串 ...

  3. JS 操作一个数据值

    任何语言都有自己的操作数据的方法: Js也不例外,js有3种重要的方式来操作一个数据值. 1>复制它.例如把它赋给一个新的变量. 2>把它作为参数传递给一个函数或方法. 3>可以和其 ...

  4. arm get_vector_swi_address

    unsigned long* get_vector_swi_addr() { const void *swi_addr = 0xFFFF0008; unsigned ; unsigned ; unsi ...

  5. Unicode字符集下CString与char *相互转换

    经常遇到CString转换char*时只返回第一个字符.原因是因为在Unicode字符集下CString会以Unicode的形式来保存数据,强制类型转换只会返回第一个字符.所以直接转换在基于MBCS的 ...

  6. os8 location authorization 错误.

    今天在XCode6上打开之前写的地图时,给我报这个错 location authorization 去网上查了一番,才知道Xcode6对地图的设置稍有修改 在stackoverflow上找到了答案 i ...

  7. WCF基于Cookie回传的系列(概述)

    1  WCF的基本知识(不作细述,园子里有很多的经典的文章系列) 2 WCF的执行过程 3 让服务通信像浏览器发送请求应答一样回传Cookie,并实现Cookie在不同的服务间共享 4  基于共享后的 ...

  8. Android 获取文件大小

    android 获取文件夹.文件的大小 以B.KB.MB.GB 为单位 FileSizeUtil public class FileSizeUtil { ;//获取文件大小单位为B的double值 ; ...

  9. quote, quasiquote, unquote和unquote-splicing

    关于符号类型 符号类型又称引用类型,在概要一文中本人介绍得非常的模糊,使很多初学者不理解.符号类型在Scheme语言中是最基础也是最重要的一种类型,这是因为Scheme语言的祖先Lisp语言的最初目的 ...

  10. python sqlite3使用

    python sqlite3文档地址:http://docs.python.org/2/library/sqlite3.html The sqlite3 module was written by G ...