SSH框架总结(框架分析+环境搭建+实例源码下载)

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。html

 

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

 

Struts做为系统的总体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面做为一个轻量级的IoC容器,负责查找、定位、建立和管理对象及对象之间的依赖关系,另外一方面能使Struts和Hibernate更好地工做。java

 

 

由SSH构建系统的基本业务流程是:git

 

一、在表示层中,首先经过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),而后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。程序员

二、在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协做对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提高系统性能和保证数据的完整性。web

三、在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。spring

 

采用上述开发模型,不只实现了视图、控制器与模型的完全分离,并且还实现了业务逻辑层与持久层的分离。这样不管前端如何变化,模型层只需不多的改动,而且数据库的变化也不会对前端有所影响,大大提升了系统的可复用性。并且因为不一样层之间耦合度小,有利于团队成员并行工做,大大提升了开发效率。数据库

 

 

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

1、Spring编程

一、什么是Spring?

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

 

二、Spring的特性

具体本身百度吧

全部Spring的这些特征使你可以编写更干净、更可管理、而且更易于测试的代码

 

三、为何使用Spring?

Spring的以上特性使得开发人员使用基本的JavaBean来完成之前只可能由EJB完成的事情。然而,Spring的用途不只限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用均可以从Spring中受益。

 

2、Struts

一、什么是Struts?

它经过采用 Java Servlet/JSP 技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

 

二、Struts1的核心构成

 

在 Struts1 中,由一个名为 ActionServlet 的 Servlet 充当 控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的 struts-config.xml 的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。

 

在 MVC 的模型(Model)部分,常常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动做),这两个概念子系统分别具体对应 Struts 1里的 ActionForm 与 Action 两个须要继承实现超类。在这里,Struts 1能够与各类标准的数据访问技术结合在一块儿,包括Enterprise Java Beans(EJB), JDBC 与 JNDI。

 

在 Struts 1的视图(View) 端,除了使用标准的JavaServer Pages(JSP)之外,还提供了大量的标签库使用,同时也能够与其余表现层组件技术(产品)进行整合,好比 Velocity Templates,XSLT 等。

 

经过应用 Struts 的框架,最终用户能够把大部分的关注点放在本身的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。

 

三、Struts1的基本执行流程

详见《STRUTS基本工做流程》

 

四、什么是struts2

Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差异巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器可以与ServletAPI彻底脱离开,因此Struts 2能够理解为WebWork的更新产品

 

五、strut2的体系结构

 

 

解析:

当Web容器收到请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括  流程(ActionContextCleanUp)过滤器,而后通过Other filters(SiteMesh ,etc),

接下来须要调用FilterDispatcher核心控制器,而后它调用ActionMapper肯定请求那个Action,ActionMapper返回一个收集Action详细信息的ActionMaping对象。

接下来FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),而后建立ActionInvocation对象,ActionInvocation在调用Action以前会依次的调用所用配置拦截器(Interceptor N) 一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)而后执行这个Result Result会调用一些模版(JSP)

来呈现页面,以后拦截器(Interceptor N)会在被执行(顺序和Action执行以前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和(核心控制器)(FilterDispatcher)。

 

六、为何使用Struts?

首先,Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用做实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特色,作了相应的变化与扩展,减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化

 

另外, struts具备页面导航功能,使系统的脉络更加清晰。经过一个配置文件,便可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤为是当另外一批开发者接手这个项目时,这种优点体现得更加明显。

 

七、 Struts1和Struts2的区别

详见《Struts1 和 Struts2

 

3、Hibernate

一、什么是Hibernate?

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。 Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序使用,也能够在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate能够在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任

 

二、Hibernate核心构成

 

具体就不展开了

 

三、Hibernate基本执行流程

 

 

为何使用Hibernate?

1. 对JDBC访问数据库的代码作了封装,大大简化了数据访问层繁琐的重复性代码。

二、Hibernate是一个优秀的ORM实现。他很大程度的简化DAO层的编码工做,将软件开发人员从大量相同的数据持久层相关编程工做中解放出来,使开发更对象化了。

三、移植性好,支持各类数据库,若是换个数据库只要在配置文件中变换配置就能够了,不用改变hibernate代码。

四、支持透明持久化,由于hibernate操做的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。因此说它是一个轻量级框架。

 

 

最后附上SSH1和SSH2框架搭建的实例,点击便可下载

SSH1框架搭建实例(spring2+struts1+hibernate3)采用旧版本,详见代码中注释

SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)所有采用最新版本,详见代码中注释

 

开发环境搭建,参照个人另外一篇博客

Win7(64) + eclipse(64)+ tomcat7(64)+ jdk7(64)开发环境配置

 

 

 

[html] view plain copy

 print?在CODE上查看代码片派生到个人代码片

  1.  一些说明:  
  2.   
  3. 索要代码的邮箱,我基本上都发过了,若是有漏发,请联系我。  
  4.   
  5.   
  6. 仍是但愿你们去csdn下载页去下载。若是速度慢,能够去这里http://pan.baidu.com/s/1eQh7FXo  
  7.   
  8.   
  9. 开发环境配置。http://blog.csdn.net/shan9liang/article/details/8807784  
  10.     
  11. 在war中,找到application-common.xml。修改数据源,指定本身的数据库便可。项目部署后,会自动映射表。  
  12.     
  13.     
  14. <!--配数据源 -->  
  15. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  16. destroy-method="close">  
  17. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />  
  18. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />  
  19. <property name="username" value="ssh" />  
  20. <property name="password" value="ssh" />  
  21. </bean>  
  22.     
  23. 以上是oracle的配置。  
  24.   
  25. 若是使用其余数据库,请在lib目录下,加入驱动包。并修改数据源。  
  26.   
  27. 强烈建议:  
  28.   
  29.   
  30. https://code.csdn.net/shan9liang/tgb  
  31. 这是在CSDN CODE托管的,采用ssh搭建的一个考勤管理系统,maven项目,比原来那个更规范了,建议用这个,并且我会持续更新,逐渐加入各类主流框架,相信我。  
  32. 。不过不是eclipse项目,须要手工导入eclipse,最近特喜欢用intellij。建议直接用git clone。  
相关文章
相关标签/搜索