SSH(Struts+Spring+Hibernate)三层架构

合集下载

ssh框架原理及流程

ssh框架原理及流程

ssh框架原理及流程SSH框架原理及流程。

SSH框架是指Struts、Spring、Hibernate三个开源框架的整合,它们分别解决了Web层、业务逻辑层和数据访问层的问题。

在实际开发中,SSH框架已经成为了JavaEE开发的主流框架之一。

本文将从SSH框架的原理和流程两个方面进行介绍。

首先,我们来了解一下SSH框架的原理。

Struts框架主要用于处理Web层的请求,它采用MVC(Model-View-Controller)的设计模式,将应用程序分为模型、视图和控制器三个部分。

Spring框架是一个轻量级的IoC(控制反转)和AOP(面向切面编程)容器,它提供了一个全面的基础设施,用于构建企业级应用。

Hibernate框架则是用来解决数据访问层的问题,它是一个强大的、高性能的对象关系映射(ORM)框架,能够将对象和数据库表之间进行映射,从而简化了数据访问层的开发。

接下来,我们将介绍SSH框架的流程。

首先,用户发送请求到Struts的Action,Action根据请求调用相应的业务逻辑,然后将处理结果返回给用户。

在这个过程中,Spring负责管理业务逻辑组件,提供了IoC容器和AOP框架的支持。

同时,Hibernate负责处理数据的持久化,它可以通过配置文件来映射Java对象和数据库表,从而实现数据的增删改查操作。

整个流程中,三个框架各司其职,相互配合,使得开发变得更加高效和简洁。

总结一下,SSH框架的原理是由Struts、Spring、Hibernate三个框架整合而成,分别解决了Web层、业务逻辑层和数据访问层的问题。

在实际开发中,SSH框架的流程是用户发送请求到Struts的Action,Action调用业务逻辑,Spring负责管理业务逻辑组件,Hibernate负责数据持久化。

三个框架相互配合,使得开发变得更加高效和简洁。

通过本文的介绍,相信读者对SSH框架的原理和流程有了更深入的了解,希望能够对大家在实际开发中有所帮助。

Java的strutsspringhibernate精通SSH三大框架的底层机制及原理

Java的strutsspringhibernate精通SSH三大框架的底层机制及原理

Java的struts、spring、hibernate精通SSH三大框架的底层机制及原理1. 什么是SSH框架SSH是由Struts、Spring、Hibernate三个框架整合而成的,它是一种企业级、全栈式框架,非常适合开发大型Web应用程序。

Struts是MVC架构模式中的控制器层,负责接收请求并转化成对应的业务逻辑进行处理,同时也控制着视图层进行渲染。

Spring是一个轻量级的开源框架,它可以被用来构建Java企业级应用,能够提供全周期的、全栈式的框架服务。

Hibernate是一个ORM(对象关系映射)框架,之前在持久化层需要进行数据库的操作,但是Hibernate可以让开发者不用直接操作数据库,而是通过Java对象与数据库进行交互。

2. SSH框架的优势SSH框架的三个组件各自拥有一系列的优势。

Struts提供了用于Web开发的MVC架构,使得应用程序的开发和维护更加清晰、明了。

Spring专注于解决企业开发中的复杂问题,比如事务管理、安全管理、远程调用、Web框架等。

Hibernate则是优秀的ORM框架,可以将Java对象与关系型数据库进行映射,让开发者不用关心具体的SQL语句。

3. SSH框架的实现机制SSH框架的三个组件相互整合,形成了一个高效、稳定、易于使用的开发框架。

在SSH框架中,Web请求首先被Struts2框架接收,Struts2框架通过ActionContext来向Action中注入Spring容器管理的Bean完成业务逻辑处理,而Bean之间的关系都是由Spring的IOC容器维护的。

声明式事务管理交给Spring框架完成,Hibernate框架在ORM层将Java对象映射到数据库记录。

下面分别来详细介绍一下SSH框架各自的底层机制及原理。

3.1 Struts2框架Struts2框架是一个基于MVC模式的Web应用程序框架。

在Struts2中,负责接收请求转发的控制器为Action。

ssh整合框架原理及流程

ssh整合框架原理及流程

ssh整合框架原理及流程SSH(Spring、Struts和Hibernate)框架整合的原理和流程如下:原理:1. 控制反转(IoC):IoC是一种设计原则,通过这种原则,对象之间的依赖关系由容器来控制,而非传统的直接操控。

这使得程序代码更加灵活,易于复用。

2. 依赖注入(DI):DI是IoC的一种实现方式。

通过DI,组件之间的依赖关系由容器在运行时决定,并动态地将这种关系注入到组件中。

流程:1. 建立web工程,并将其编码设置为UTF-8。

2. 将整个JSP页面也设置为UTF-8编码格式。

3. 建立三个source folder文件:src(存放源代码)、config(存放所有的配置文件,如Struts、Hibernate和Spring配置文件)、test(存放测试类)。

4. 在WebRoot\WEB-INF\lib中导入相应的jar包。

5. 配置文件。

在这个文件中,Spring容器以监听器的形式与Tomcat整合。

6. Struts负责控制Service(业务逻辑处理类),从而控制Service的生命周期。

这样层与层之间的依赖很强,属于耦合。

7. 使用Spring框架来控制Action对象(Struts中的)和Service类。

这使得两者之间的关系变得松散。

Spring的IoC机制(控制反转和依赖注入)正是用在此处。

8. Spring的AOP应用:事务的处理。

在以往的JDBCTemplate中,事务提交成功、异常处理都是通过Try/Catch来完成。

整合SSH框架的目的是提高软件开发的效率和灵活性,减少代码的冗余和复杂性,使代码更易于维护和扩展。

ssh框架面试题

ssh框架面试题

ssh框架面试题1. 什么是SSH框架?SSH框架是一种软件开发架构,由Struts、Spring和Hibernate三个开源框架共同组成。

框架的名字来源于Struts与Spring的首字母和Hibernate的音译。

•Struts是一个MVC框架,用于处理Web页面的请求和响应。

•Spring是一个IoC容器和AOP框架,用于管理各种组件的创建和依赖注入。

•Hibernate是一个ORM框架,用于处理对象与数据库的映射关系。

SSH框架的优势在于它们能够相互补充,提供全面的解决方案,简化开发流程,提高开发效率。

2. SSH框架的特点有哪些?SSH框架具有以下特点:(1) 分层架构SSH框架采用分层架构,将整个软件系统划分为多个层次,包括表示层、业务逻辑层和数据访问层。

这种架构可以提高代码的可维护性和复用性,使系统更加灵活和易于扩展。

(2) 基于约定的编程SSH框架采用一些默认约定来简化开发过程。

例如,Struts框架默认会将请求参数自动绑定到Action的属性上,Spring框架默认使用注解扫描来管理Bean的创建和依赖注入,Hibernate框架默认使用映射文件来处理对象与数据库表之间的映射关系。

(3) 松耦合设计SSH框架通过依赖注入和面向接口编程等方式实现松耦合设计。

Struts和Spring框架使用依赖注入将不同组件之间解耦,而Hibernate框架使用接口和抽象类来定义通用的数据库操作API,降低了代码的耦合性,提高了软件的可维护性和可测试性。

(4) 强大的功能扩展性SSH框架提供了丰富的插件和扩展点,可以根据项目的需求进行灵活的功能扩展。

例如,Struts框架可以通过自定义拦截器来处理一些通用的功能,Spring框架可以通过编写切面来实现横切关注点的处理,Hibernate框架可以通过自定义的事件监听器来处理对象与数据库的操作。

(5) 成熟的社区支持SSH框架是开源软件,拥有庞大而活跃的社区,提供了大量的文档、教程和示例代码,开发者可以通过社区获取帮助和解决问题。

SSH框架简介

SSH框架简介

SSH框架简介SSH 即是Struts + Spring + Hibernate 3个开源框架。

一、Struts是一个MVC框架,通过配置文件很好的实现了模型与视图的分离,Struts应用包括3个组件:控制器组件(ActionServ let和自定义Action);模型组件(普通接口和Jav aBean);视图组件(ActionForm和Struts标签);Struts 的MVC设计模式可以使我们的逻辑变得很清晰。

Struts的工作流程:在web应用启动时就会加载初始化ActionServ let,ActionServ let从struts-conf ig.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServ let接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的v alidate()方法;-(4)如果ActionForm的v alidate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;-(5)ActionServ let根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServ let在把客户请求转发给ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;二、Spring是一个轻量级框架,提供依赖注入容器,AOP实现,DAO/ORM支持,Web集成等功能。

Java的strutsspringhibernate精通SSH三大框架的底层机制及原理

Java的strutsspringhibernate精通SSH三大框架的底层机制及原理

Struts1的工作原理Struts1工作原理图:1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml 中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。

(面向对象思想)2、发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。

3、form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。

4、派发请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。

5、处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。

服务器通过ActionForward对象进行转发工作。

6、返回响应:Action将业务处理的不同结果返回一个目标响应对象给总控制器。

7、查找响应:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。

8、响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户。

ssh框架启动流程系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。

其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。

具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring完成业务逻辑。

三大框架ssh模式的详解

三大框架ssh模式的详解

6 16JAVA三大框架ssh-Struts、Spring、Hibernate(面试时用)文章分类:Java编程JAVA三大框架ssh-Struts、Spring、HibernateStruts1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是 ActionServlet的子类。

我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet 再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。

一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀;2. ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。

3.要说明的是, ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定,(看配置文件)作者为什么将这里命名为input属性,而不是error属性,我们后面结合实际的运行效果进行分析。

4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp 页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action 程序代码与返回的jsp页面名称的解耦。

SSH框架strutshibernatespring各起什么作用(精)

SSH框架strutshibernatespring各起什么作用(精)

SSH中struts hibernate spring 各起什么作用struts 控制用的hibernate 操作数据库的spring 用解耦的详细的说:STRUTS 在SSH 框架中起控制的作用, 其核心是Controller, 即Action, 而action 的核心就是struts.xml. 主要控制逻辑关系的处理.hibernate 是数据持久化层, 是一种新的对象、关系的映射工具, 提供了从Java 类到数据表的映射,也提供了数据查询和恢复等机制, 大大减少数据访问的复杂度。

把对数据库的直接操作, 转换为对持久对象的操作.SPRING 是一个轻量级的控制反转(IoC) 和面向切面(AOP) 的容器框架, 面向接口的编程, 由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。

这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中起到的主要作用是解耦Struts 、spring 、Hibernate 在各层的作用1 )struts 负责web 层.Action 接收网页中表单提交的数据,然后通过Action 进行处理,再return String 通过struts.xml 中的result接收到后跳转到对应的网页。

在struts.xml 中定义package—action 会加载。

2 )spring 负责业务层管理,即Service (或Manager).1 .service 为action 提供统计的调用接口,封装持久层的DAO.2 .可以写一些自己的业务方法。

3 .统一的javabean 管理方法4 .声明式事务管理5. 集成Hiberante3 )Hiberante ,负责持久化层,完成数据库的crud 操作hibernate 为持久层,提供OR/Mapping 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录目录 (1)一、SSH整体介绍 (3)1. 简介 (3)(1)Struts用于表现层,负责页面数据提取,页面动作响应。

(3)(2)Spring是一种轻量级的框架模型,主要负责业务逻辑层的对象创建,表现层的Action的创建,以及持久层的DAO的创建。

(3)(3)Hibernate负责把内存中的数据对象保存到数据库中。

(3)2. 框架集成说明 (3)1) Struts与Spring的集成 (3)2) Spring与Hibernate的集成 (4)3. 程序的包结构 (4)1) 表现层的类包 (4)2) 持久层的类包 (4)3) 业务层的类包 (5)二、核心的配置文件的说明: (5)1. Web.xml文件——工程初始化配置文件 (5)1) Servlet配置 (5)2) init-param设置 (6)3) servlet-mapping配置 (7)4) Spring配置文件配置 (7)5) Spring的Bean工厂配置 (7)6) Filter配置 (8)7) 欢迎页面配置 (9)2. struts-config.xml——Struts的配置文件 (9)(1)Form的配置 (9)(2)Action的配置 (9)(3)全局异常处理类配置 (10)(4)全局转发配置 (10)(5)action配置 (10)(6)资源文件配置 (11)3. applicationContext-common.xml——Spring公共配置文件 (11)(1)Session工厂配置 (11)(2)事务配置 (12)4. applicationContext-beans.xml——Spring中Bean的配置文件 (12)5. hibernate.cfg.xml——Hibernate的配置文件 (13)(1)Hibernate中Session工厂的配置 (13)(2)hbm.xml配置文件 (14)(3)DAO实现类说明 (15)三、Demo实例说明 (15)1、demo.jsp: (15)2、addRate.jsp (16)3、rateList.jsp (16)4、rateinfoAction (17)5、rateinfoAction 的配置(struts-config.xml) (17)6、配置spring文件 (18)7、比例列表(rateList.jsp): (20)一、SSH整体介绍1. 简介本Demo程序采用的是SSH(Struts+Spring+Hibernate)三层架构。

(1)Struts用于表现层,负责页面数据提取,页面动作响应。

(2)Spring是一种轻量级的框架模型,主要负责业务逻辑层的对象创建,表现层的Action的创建,以及持久层的DAO的创建。

(3)Hibernate负责把内存中的数据对象保存到数据库中。

2. 框架集成说明在SSH三层架构中,主要用Struts来实现对页面的响应及页面跳转。

当用户向服务器发送某一个请求,这个请求会被服务器(Tomcat)接收到,服务器会根据请求的内容,将这个请求发送给相应的Servlet实例进行处理。

Servlet会根据其内容,去生成相应的Action实例。

本程序中,Struts将Action的创建工作交给了Spring的代理类来完成,创建这个实例后,将这个实例注入,由Struts调用Action中的相应方法。

Action中可以配置一个或多个Service对象,Action调用Service中的方法进行业务处理。

Service中通常会有一个或多个DAO的对象,DAO 继承了Hibernate的接口,用来处理数据库的操作。

而Action,Service,DAO的创建与注入,都是由Spring的Bean工厂来实现的。

1)Struts与Spring的集成✧在Web.xml中配置Struts的配置文件✧在Web.xml中配置Spring的配置文件,Bean工厂及过滤器✧在Struts配置文件中集成Spring的代理类✧在Spring配置文件中配置Action2)Spring与Hibernate的集成✧在Web.xml中配置Hibernate延迟过滤器配置✧在Web.xml中配置Spring的配置文件,Bean工厂及过滤器✧在Spring配置文件中配置DAO✧在Hibernate配置文件中配置数据库信息✧在DAO的实现类中继承HibernateDaoSupport类3. 程序的包结构1)表现层的类包com.ra.web.actionform与com.ra.web.action这两个包,分别用来存放表现层的Form与Action。

2)持久层的类包此文件夹下放置模型类,以及对应的Hibernate配置文件。

com.ra.dao包为DAO层的接口类,com.ra.dao.Impl包用来放对应的dao的接口实现类。

3)业务层的类包这个包用来放置相应的Service,用来处理相应的业务逻辑。

二、核心的配置文件的说明:1. Web.xml文件——工程初始化配置文件1)Servlet配置在WebRoot文件下的Web.xml文件,是WebProject工程配置文件,Tomcat服务器在启动时,会自动加载所有工程中的Web.xml文件。

服务器会根据Web.xml中的配置信息,生成相应的Servlet的实例对象,用来处理客户端发送来的请求。

本程序的Servlet是使用的Struts中的ActionServlet,它是继承的HttpServlet类。

ActionServlet 支持多线程,目前的Struts框架只允许在应用中配置一个ActionServlet。

它是Struts中的控制器,系统的指令由其中转,它从struts-config.xml中读取配置信息,并在服务器后台自动启动一个线程。

2)init-param设置Init-param设置ActionServlet运行参数,对Servlet的运行环境进行初始化配置。

实际上param-name的值是与ActionServlet中的属性相对应的。

ActionServlet在创建时会调用init函数,函数会用配置文件中param-value值来设置相应的属性。

A)Struts配置文件设置以相对路径的方式指明Struts应用程序的配置文件位置,在ActionServlet中默认值为/WEB-INF/struts-config.xml,所以如果是默认情况,在这里也可以不用配置。

如果有多个配置文件可以用逗号分隔符。

B)debug设置设置Servlet的debug级别,控制日志记录的详细程序。

默认为0,记录相对最少的日志信息。

C)detail设置设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过该设置,可以查看不同详细等级的解析日志。

默认为0,记录相对最少的日志信息。

D)load-on-startup设置这个标记指示Web应用服务器在启动时加载这个Servlet(实例化并调用init方法),标记的内容必须使用一个整数指定Servlet的加载顺序。

如果这个整数是负值,或者这个值没有出现,那么窗口任意选择Servlet加载。

如果这个整数大于等于零以,那么窗口必须按照部署的顺序加载他们。

容器必须保证,拥有小的load-on-startup值的Servlet必须先被加载,如果Servlet有相同的load-on-startup值,那么,容器将自动选择这些Servlet的加载顺序。

3)servlet-mapping配置这里*是通配符,表示服务器只要接收到的形如*.do的请求,就会把这个请求交由名为action 的servlet实例来处理。

请求的形式可以由开发者自己定义,Struts中通常都用do来做为后缀。

而此处的servlet-name与上面servlet定义中的servlet-name是相对应的。

4)Spring配置文件配置context-param是application范围内的参数,存放在servletcontext中。

此所设定的参数,在JSP 内页中可以使用${initParam.param_name}来取得,若在Servlet可以使用String param_name = getServletContext().getInitParamter(“param_name”);来取得。

在此程序中,参数contextConfigLocation用来定义要装入的Spring配置文件。

如果想装入多个配置文件,可以在<param-value>标记中用逗号作为分隔符。

默认情况Spring的配置文件为applicationContext.xml。

此程序是因为改变了spring配置文件名字,所以才需要在Web.xml中配置。

如果是默认情况则不需要配置。

5)Spring的Bean工厂配置listener元素用来定义Listerner接口,ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。

它实现了ServletContextListener这个接口,在Web.xml 配置这个监听器,启动容器时,就会默认执行它的实现的方法,加载相应的Spring类,以使当对象调用时,实现其相应的注入。

这是一个Spring的重要类,在ContextLoaderListener中关联了ContextLoader类。

所以整个加载配置过程由ContextLoader来完成,它创建的是XmlWebApplicationContext这样一个类,这个类实现了BeanFactory接口,所以Spring中的所有的bean都由这个类来创建。

6)Filter配置filter元素用来声明filter的相关设定。

过滤器就是一个Servlet,只是比较特殊而已,可以用它来对客户端请求以及发出的响应进行部分的过滤操作。

filter-name是过滤器的名称,filter-class为对应的类。

filter-mapping元素的两个主要子元素为filter-name与url-pattern,用来定义filter所对应的url。

”/*”形如这样的url都会发送给相应的过滤器。

A)Spring中文乱码过滤器配置在web开发中常常遇到中文乱码的问题,解决的方案常常是在Web.xml中配置一个过滤器,Spring为我们的web开发提供了一个过滤器,可以解决中文乱码的问题。

B)Hibernate延迟过滤器配置Hibernate的session的生命周期横跨Servlet和Jsp,当我们的Jsp需要用到某个延迟属性的时候,发现session已经关闭了,就会发生延迟加载例外。

相关文档
最新文档