【SSH】框架简介

是什么

  我们常说的ssh,通常为ssh协议(Secure Shell Protocol安全外壳协议)或者ssh框架(集成struts+spring+hibernate)。本篇博文我们主要来学习ssh框架,它是目前比较流行的一种Web应用程序开源框架,Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装。

总体结构

  ssh框架,分为表现层、业务逻辑层、持久层。其中表现层Struts采用JSP技术,业务逻辑层Spring为了解耦,分为Web层、Service层和Dao层,持久层Hibernate负责与数据库有关的操作。
  

由什么组成

一.Struts

(1)Struts1
  Struts是一个轻量级的主流框架,分为Struts1和Struts2,它们都是遵循MVC思想的开源框架。
  Struts1是真正意义上的MVC模式,但在性能、耦合、侵入方面存在不足。Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts 1框架有3个重要组成部分:Action、ActionForm和ActionForward对象。对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一,它不可能与这些视图层的模版技术进行整合。其次,Struts1与Servlet API的严重耦合,使应用难于测试。最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架。
(2)Struts2  
  为了解决Struts1的不足之处,Struts2应运而生,但Struts2不简单是Struts1的升级版,而是一个全新的框架,它将Struts技术与WebWork技术完美的结合起来。Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。此外,Struts2与Struts1相比,在线程模拟、Servlet依赖、封装请求、类型转换等方面,都有了巨大的改进。

区别Struts1Struts2
Action实现必须统一扩展自Action可以是一个POJO
线程模型单实例,一个Action的实例处理所有的请求一个请求对应一个实例(每次请求时都新new出一个对象)
Servlet依赖依赖于Servlet API,程序难于测试不再依赖于Servlet API,有利于测试
封装请求参数强制使用ActionForm对象封装请求的参数可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性
表达式语言整合了EL整合了OGNL(Object Graph NavigationLanguage)
绑定值到视图技术使用标准的JSP使用“ValueStack”技术
类型转换ActionForm基本使用String类型的属性使用OGNL进行转换
Action执行控制支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期通过拦截器堆栈为每一个Action创建不同的生命周期

                            (选自百度百科) 

二.Spring

  Spring是java平台上的一个开源应用框架,它为应用程序的开发提供了全面的基础设施支持,使得开发者能更好的致力于应用开发而不用关系底层的架构。它的核心功能使用与任何的java应用,用途十分广泛。
  
1、优点
(1)有效地组织中间层对象 。Spring框架能够有效地将现有地框架例如Struts和Hibernate框架组织起来。
(2)实现了真正意义上的面向接口编程,可实现组件之间的高度解耦
(3)所秉承的设计思想就是让使用Spring创建的那些应用都尽可能少地依赖于它的APIs. 在spring应用中的大多数业务对象都不依赖于Spring ,使用Spring构建的应用程序易于进行单元测试 。
(4)提高了代码的可重用性

2、框架特征(选自百度百科):
(1)轻量——(大小与开销)。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布,并且Spring所需的处理开销也很小。
(2)控制反转——通过控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
(3)面向切面——允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
(4)容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
(5)框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
(6)MVC
  所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。  

三.Hibernate

  Hibernate是一个开放源码的对象-关系映射(ORM)框架,是基于JDBC数据持久化的一个框架,它对访问数据库的代码进行了封装,简化了dao层的编码。开发人员可以使用面向对象的编程思想来进行持久层开发,操作数据库,也可以使用Hibernate提供的HQL(Hibernate Query Language)直接从数据库中获得java对象。
  
  (下图为Hibernate工作原理图:)
  这里写图片描述
  

小结

  通过ssh网上商城,学到了很多java的思想与内容,这与当初学习.net的感觉大不相同,接下来我们需要学习更多的知识,编织更大的知识网。

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值