集成SSH框架的系统从职责上分为四层:
表示层、
业务逻辑层、
数据持久层和域模块层,以帮助开发人员在短时间内搭建结构清晰、可复用性好、
维护方便的
Web应用程序。其中使用Struts做为系统的总体基础架构,负责MVC的分离,在Struts框架的
模型部分,控制业务跳转,利用Hibernate框架对
持久层提供支持,Spring作管理,管理struts和hibernate。具体作法是:用
面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,而后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现
Java类与数据库之间的转换和访问,最后由Spring作
管理,管理struts和hibernate
系统的基本
业务
流程是: 在
表示层中,首先经过JSP页面实现
交互界面,负责接收请求(Request)和传送响应(Response),而后Struts根据
配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协做对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提高系统性能和保证数据的完整性。而在
持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
框架结构
ssh框架Struts1
Struts对Model,View和Controller都提供了对应的组件。
ActionServlet,这个类是Struts1的核心控制器,负责拦截来自用户的请求。
Action,这个类一般由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
Model部分:
由ActionForm和JavaBean
组成,其中ActionForm用于将用户的请求参数封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。
JavaBean则封装了底层的业务逻辑,包括数据库访问等。
View部分:
该部分采用JSP(或HTML、PHP……)实现。
Struts提供了丰富的
标签库,经过标签库能够减小脚本的使用,自定义的标签库能够实现与Model的有效交互,并增长了现实功能。对应上图的JSP部分。
Controller组件:
Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。
系统核心控制器,对应上边的ActionServlet。该控制器继承了HttpServlet类,所以能够配置成标注的Servlet。该控制器负责拦截全部的
HTTP请求,而后根据用户请求决定是否要转给业务逻辑控制器。
业务逻辑控制器,负责处理用户请求,自己不具有处理能力,而是调用Model来完成处理。对应Action部分。
ssh框架Spring
Spring是一个开源框架,它由Rod Johnson建立。它是为了解决企业应用开发的复杂性而建立的。Spring使用基本的JavaBean来完成之前只可能由EJB完成的事情。然而,Spring的用途不只限于服务器端的开发。从简单性、
可测试性和
松耦合的角度而言,任何Java应用均可以从Spring中受益。
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
范围:任何Java应用
简单来讲,Spring是一个轻量级的
控制反转(IoC)和面向切面(AOP)的容器框架。
轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架能够在一个大小只有1MB多的JAR文件里发布。而且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转——Spring经过一种称做控制反转(IoC)的技术促进了
松耦合。当应用了IoC,一个对象依赖的其它对象会经过被动的方式传递进来,而不是这个对象本身建立或者查找依赖对象。你能够认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面——Spring提供了
面向切面编程的丰富支持,容许经过分离应用的业务逻辑与系统级服务(例如审计(auditing)和
事务(transaction)管理)进行
内聚性的开发。
应用对象只实现它们应该作的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你能够配置你的每一个bean如何被建立——基于一个可配置原型(prototype),你的bean能够建立一个单独的实例或者每次须要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不该该被混同于传统的重量级的EJB容器,它们常常是庞大与笨重的,难以使用。
框架——Spring能够将简单的组件配置、组合成为复杂的应用。在Spring中,
应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了不少基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
全部Spring的这些特征使你可以编写更干净、更可管理、而且更易于测试的代码。它们也为Spring中的各类模块提供了基础支持。
ssh框架Hibernate
Hibernate是一个开放源代码的
对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。 Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序使用,也能够在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate能够在应用EJB的J2EE架构中取代CMP,完成
数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。经过这些接口,不只能够对持久化对象进行存取,还可以进行
事务控制。下面对这五个核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD操做(CRUD的任务是完成与数据库的交流,包含了不少常见的SQL语句。)。但须要注意的是
Session对象是非
线程安全的。同时,Hibernate的session不一样于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而之后会将HttpSession对象称为用户session。
·SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责建立Session对象。这里用到了工厂模式。须要注意的是SessionFactory并非轻量级的,由于通常状况下,一个项目一般只须要一个SessionFactory就够,当须要操做多个数据库时,能够为每一个数据库指定一个SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,建立SessionFactory对象。在Hibernate的启动的过程当中,Configuration类的实例首先定位映射文档位置、读取配置,而后建立SessionFactory对象。
·Transaction接口:Transaction接口负责
事务相关的操做。它是可选的,开发人员也能够设计编写本身的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各类数据库查询。它可使用HQL语言或SQL语句两种表达方式。