Struts+Hibernate+Spring+三个框架简介
Struts、Spring、Hibernate三大框架的原理和优点
![Struts、Spring、Hibernate三大框架的原理和优点](https://img.taocdn.com/s3/m/93acab8b01f69e31423294a0.png)
Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。
MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。
控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。
另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。
动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。
最后动作类把控制权传给后续的JSP 文件,后者生成视图。
所有这些控制逻辑利用Struts-config.xml文件来配置。
模型:模型以一个或多个java bean的形式存在。
这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。
Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。
深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式
![深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式](https://img.taocdn.com/s3/m/8c46491055270722192ef74e.png)
深入浅出的理解框架(Struts2、Hibernate、Spring)与MVC设计模式现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate。
似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和找工作的必备基础。
然而,如果在面试的时候问这些程序员,你们为什么要学习这些框架?这些框架的本质到底是什么?似乎很少很少有人能够给我非常满意的答复。
因为他们都在为了学习而学习,为了工作而学习,而不是在真正去深入了解一个框架。
其实所有的人都应该思考这样的问题:为什么要学习框架?框架到底给我带来了什么?接下来,我们以登录作为一个最简单的例子,来看看不同的年代,我们是怎么写Web程序的。
在很多年前,我们这么写程序的很多年前,那是一个贫苦的年代,如果我们要使用Java在网页上做一些动态的交互功能。
很多人会告诉你一个技术,叫做JSP。
在我还对Java非常困惑的时候,就有人告诉我,JSP是个好东西,它可以在HTML代码里面写Java代码来完成逻辑。
[javascript] view plaincopy1.<%2. String name = request.getParameter("name");3. String password = request.getParameter("password");4.5. UserHandler userHandler =new UserHandler();6.if(userHandler.authenticate(name, password)) {7.%>8.<p>恭喜你,登录成功</p>9.<%10. } else {11.%>12.<p>对不起,登录失败</p>13.<%14. }15.%>作为一张JSP,它可以接收从别的JSP发送过来的登录请求,并进行处理。
三大框架
![三大框架](https://img.taocdn.com/s3/m/ca0f9e7825c52cc58bd6be86.png)
Hibernate常用的接口
1.Configuration接口 configuration对象用于加载解析配置文件启动Hibernate,然后创建 SessionFactory实例 2.SessionFactory接口 一个SessionFactory实例对应一个数据存储源,应用从 SessionFactory中获取Session实例 。SessionFactory有以下特点: 1.它是线程安全的,这意味着它的同一个实例可以被应用的多个线程 共享。 2.它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用 只访问一个数据库,只需要创建一个SessionFactory实例,在应用初 始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每 个数据库创建一个单独的SessionFactory实例。 之所以称SessionFactory是重量级的,因为它需要一个很大的缓存, 用来存放预定义的SQL语句及映射元数据等。用户还可以为 SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的 二级缓存,该缓存用来存放被工作单位读过的数据,将来其他工作单 元可能会重用这些数据,因此这个缓存中的数据能被所有的工作单元 共享。一个工作单元通常对应一个数据库事务。
Hibernate配置文件的书写
Hibernate.cfg.xml
Hibernate映射文件的书写
基于Struts Hibernate Spring架构的软件开发
![基于Struts Hibernate Spring架构的软件开发](https://img.taocdn.com/s3/m/6b5bc51ca216147917112876.png)
基于Struts Hibernate Spring架构的软件开发摘要:近年来,随着信息技术应用于各行各业,尤其是企业信息化建设的不断发展,构建了基于Web的技术系统之上。
对于当今复杂多变的市场环境,发展壮大信息技术需要考虑他的伸缩性强、扩展性好、重用性高和易维护、易管理的特点,使得Web技术发展成为现当代的热点。
Struts Hibernate Spring三大框架(SSH)主要应用于大型项目。
只有大项目才能体现出SSH的优势。
关键词:Struts Hibernate Spring 构架软件开发随着信息技术的发展需要,构建基于Web的应用系统的需求,从而使Struts Hibernate Spring结构结合,形成对Web的新应用。
1 Struts Hibernate Spring原理概述Struts就是一个MVC模式的框架,它就是将业务代码与视图代码分离,有效地优化系统结构,提高系统的扩展性,降低系统复杂度与维护难度。
Hibernate是一个对象关系数据库映射工具,通过Hibernate的使用,能够很好地解决面向对象编程语言与关系数据库一起使用可能带来的种种麻烦,使得程序设计人员可以减少对关系数据模型的依赖,致力于业务逻辑的开发。
Spring框架的使用将J2EE层次结构中的业务层分离为业务逻辑层和数据持久层,这样业务逻辑便交给Spring处理,而数据访问则交给Hibernate处理,使得层次结构更加清晰。
1.1 StrutsStruts在MVC模块中本原来就是负责将用户数据传入业务层,以及将业务层处理的结果返回给用户,此系统属于较简单Web应用,主要作用在于在用户视图中使用get,set方法来方便地获取关联对象。
1.2 SpringSpring Framework最主要的作用在于与Hibernate的无缝链接,虽然Spring 对Hibernate提供了90%以上的封装,使我们不必去关心Session 的建立,关闭,以及事务使我们能够专心的关注业务逻辑。
Struts2+Spring框架简介+Hibernate查询语言
![Struts2+Spring框架简介+Hibernate查询语言](https://img.taocdn.com/s3/m/5de75ede08a1284ac850434c.png)
出自Gavin King的手笔,目前最流行的开源ORM框架,其灵巧的设计,优秀的 性能,还有丰富的文档,都是其迅速风靡全球的重要因素。
Entity EJB
Entity EJB实质上也是一种ORM技术,这是一种备受争议的组件技术,很多人 说它非常优秀,也有人说它一钱不值。事实上,EJB为J2EE的蓬勃发展赢得了 极高的声誉,EJB作为一种重量级、高花费的ORM技术上,具有不可比拟的优势。 但由于其必须运行在EJB容器内,而且学习曲线陡峭,开发周期、成本相对较 高,因而限制EJB的广泛使用。
添加自动注解配置(自动扫描@Service,@Repository等注解)
<context:component-scan base-package="test,a"/>
<context:annotation-config/> 该配置将隐式地向Spring容器注册4个 BeanPostProcessor
<bean id="hello" class="test.HelloWorld" abstract="false“ lazy-init="default" autowire="default" dependencycheck="default"> <property name="helloWorld"> <value type="ng.String">Hello World From IOC</value> </property> </bean>
Struts,Hibernate,Spring三框架的优缺点
![Struts,Hibernate,Spring三框架的优缺点](https://img.taocdn.com/s3/m/71755f13cc175527072208a5.png)
上面回贴情绪有点激动,希望谅解,我不是因为有人批评Hibernate而感到不快,而是因为帖子里面的观点实在让我觉得荒谬。不管觉得Hibernate好也吧,不好也吧,我唯一觉得遗憾的是,在中文论坛里面找不到一个对Hibernate的真正高水平的评价。在TSS上有一个关于Hibernate的hot thread,跟了几百贴,其中包括Hibernate作者Gavin和LiDO JDO的CTO,对于JDO和Hibernate有过一些激烈的争论,我曾经耐心的看了一遍,仍然没有发现针对Hibernate真正有力的攻击,那些所谓的攻击无非针对Hibernate没有一个GUI的配置工具,没有商业公司支持,没有标准化等等这些站不住脚的理由。
6. 支持I18N
一、转到展示层时,需要配置forward,每一次转到展
示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean <-> DAO <-> Hibernate <-> DB
就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。
四、EB和Hibernate学习难度在哪里?
SSH框架简介
![SSH框架简介](https://img.taocdn.com/s3/m/264013e9e009581b6bd9eb0e.png)
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框架介绍:Spring和Hibernate
![Java框架介绍:Spring和Hibernate](https://img.taocdn.com/s3/m/1f7b9a47178884868762caaedd3383c4bb4cb4f0.png)
Java框架介绍:Spring和Hibernate 引言:在当前的软件开发中,使用框架已经成为标配。
一个优秀的框架可以极大地提高开发效率并减少开发成本。
Java语言也有许多流行的框架,其中最常见的两个框架是Spring和Hibernate。
本文将详细介绍这两个框架,并对它们的步骤和功能进行阐述。
一、Spring框架:1. Spring框架简介- Spring是一个开源的JavaEE框架,提供了一种轻量级的容器模式,用于管理Java应用程序的组件和对象。
- Spring的目标是简化企业级应用开发,提高可维护性和可测试性。
2. Spring的核心功能- 控制反转(IoC):通过对象的依赖注入,将对象的创建和管理交由Spring 容器完成。
- 面向切面编程(AOP):通过配置和动态代理,对多个对象的共同功能进行封装和复用。
- 事务管理:提供对数据库事务的支持,保证数据的一致性和完整性。
- MVC框架:提供Web应用开发的支持,实现了MVC设计模式。
3. 使用Spring的步骤- 引入Spring的依赖:在项目的配置文件中引入Spring的相关依赖,可以使用Maven或Gradle等工具进行管理。
- 配置Spring的配置文件:创建一个XML或注解配置文件,定义Bean和其他Spring组件的配置。
- 编写业务逻辑代码:在Java类中编写业务逻辑代码,将需要由Spring管理的对象注入到类中。
- 获取Spring容器:通过配置文件或注解获取Spring容器,并从容器中获取需要的Bean对象。
- 使用Spring对象:在业务逻辑中使用Spring容器中的对象,调用方法来完成业务操作。
二、Hibernate框架:1. Hibernate框架简介- Hibernate是一个开源的对象关系映射(ORM)框架,用于简化Java应用程序与关系型数据库的交互。
- Hibernate通过将Java对象映射到数据库表,实现了对象导向的数据库操作。
java三大框架是什么
![java三大框架是什么](https://img.taocdn.com/s3/m/efef75289a6648d7c1c708a1284ac850ad0204da.png)
java三大框架是什么Java三大框架是什么一、介绍Java是一种广泛使用的编程语言,由于其跨平台性和丰富的类库支持,成为了企业级应用开发的首选语言。
在Java开发中,框架是非常重要的组成部分,它们提供了一套结构化的工具和方法来简化开发流程并提高代码的重用性和可维护性。
在众多Java框架中,有三个最重要、最流行且被广泛使用的框架,它们分别是Spring框架、Hibernate框架和Struts框架。
二、Spring框架1. 简介Spring框架是一个轻量级的Java开发框架,最初用于解决企业级应用开发中的复杂性和耦合性问题。
Spring提供了一系列的模块和组件,为开发者提供了全面的解决方案,例如依赖注入、AOP(面向切面编程)、IoC(控制反转)等。
Spring框架的核心是IoC容器,它通过管理对象的生命周期和控制对象之间的依赖关系,简化了开发流程。
2. 主要特点和优势(1)松耦合:Spring框架通过IoC容器管理对象之间的依赖关系,使得应用程序的各个组件之间变得松散耦合,便于维护和升级。
(2)面向切面编程:Spring框架支持AspectJ规范,可以通过AOP实现横切关注点的模块化,并将其与业务逻辑分离,提高了代码的可维护性和重用性。
(3)可扩展性:Spring框架采用模块化的设计,开发者可以根据需要选择性地使用各个模块,使得框架具有很高的可扩展性和灵活性。
(4)测试支持:Spring框架提供了对单元测试的支持,可以方便地对代码进行单元测试和集成测试。
3. 使用场景Spring框架广泛应用于企业级应用开发,特别是在大规模和复杂度高的项目中表现出色。
由于其完善的设计和优秀的生态系统,Spring框架不仅可以用于开发Web应用程序,还可以用于开发移动应用、分布式系统、大数据系统等各种类型的应用。
三、Hibernate框架1. 简介Hibernate框架是一个优秀的Java持久化框架,它简化了对象与数据库之间的映射和操作,提高了开发效率和代码的可维护性。
STRUT+SPRING+HIBERNATE
![STRUT+SPRING+HIBERNATE](https://img.taocdn.com/s3/m/560712342f60ddccda38a06b.png)
Strut1.Struts框架结构如图:Struts对Model,View和Controller都提供了对应的组件。
在图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。
Action,这个类通常由用户提供,该控制器负责接收来ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示2.Model部分由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。
JavaBean则封装了底层的业务逻辑,包括数据库访问等。
3.View部分该部分采用JSP实现.Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。
对应上图的JSP部分4.Controller组件Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。
系统核心控制器,对应上图的ActionServlet。
该控制器由Struts框架提供,继承HttpServlet 类,因此可以配置成标注的Servlet。
该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。
业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。
对应Action部分Spring1.简介Spring是一个开源框架,它由Rod Johnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从Spring中受益。
SSH(Struts+Spring+Hibernate)三层架构
![SSH(Struts+Spring+Hibernate)三层架构](https://img.taocdn.com/s3/m/5b04b510a216147917112839.png)
目录目录 (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的集成 (3)3. 程序的包结构 (4)1) 表现层的类包 (4)2) 持久层的类包 (4)3) 业务层的类包 (4)二、核心的配置文件的说明: (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)三层架构。
三 大 框 架
![三 大 框 架](https://img.taocdn.com/s3/m/4708c5ca8bd63186bcebbcd8.png)
三大框架一.Struts2简介:Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
拦截器:拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。
拦截是AOP 的一种实现策略。
在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。
它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。
同时也是提供了一种可以提取action中可重用的部分的方式。
谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。
拦截器链就是将拦截器按一定的顺序联结成一条链。
在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。
拦截器实现原理:大部分时候,拦截器方法都是通过代理的方式来调用的。
Struts 2的拦截器实现相对简单。
当请求到达Struts 2的ServletDispatcher 时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器返回类型区别:struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的返回类型还有redirect,redirectAction,chain。
java中三大框架struts-Hibernate-Spring,具体是怎样合作工作的?各自实现什么功能?
![java中三大框架struts-Hibernate-Spring,具体是怎样合作工作的?各自实现什么功能?](https://img.taocdn.com/s3/m/a9b52572b307e87101f696c9.png)
本文由我司收集整编,推荐下载,如有疑问,请与我司联系java 中三大框架struts/Hibernate/Spring,具体是怎样合作工作的?各自实现什么功能?2013/12/28 2049 java 中三大框架struts/Hibernate/Spring,具体是怎样合作工作的?各自实现什么功能?随着Java 技术的逐渐成熟与完善,作为建立企业级应用的标准平台,J2EE 平台得到了长足的发展。
借助于J2EE 规范中包含的多项技术:Enterprise JavaBean(EJB)、Java Servlets(Servlet)、Java Server Pages(JSP)、JavaMessage Service(JMS)等,开发出了许多应用系统。
但是,在传统J2EE 应用的开发过程中也出现了一些问题:1)数据模型和逻辑模型之间的矛盾。
目前使用的数据库基本上都是关系型数据库,而Java 本质上是一种面向对象的语言,对象在存储和读取时使用SQL 和JDBC进行数据库操作,降低了编程的效率以及系统的可维护性;2)传统的J2EE 应用多采用基于EJB 的重量级框架,这种框架适合于开发大型企业应用,但是使用EJB 容器进行开发和调试需要耗费大量时间。
为了降低代码的耦合性,提高系统的开发效率,本文提出了一种基于Struts 框架和Hibernate 框架的J2EE 应用开发策略。
数据持久层及HibernateHibernate 是一个数据持久层框架,是一种实现对象和关系之间映射(O/R Mapping)的工具,它对JDBC 进行了轻量级的对象封装,使程序员可以使用对象编程思想来操作数据库。
它不仅提供了从Java 类到数据表的映射,也提供了数据查询和恢复机制。
相对于使用JDBC 和SQL 来操作数据库,使用Hibernate 能大大的提高实现的效率。
Hibernate 框架用配置文件的形式来定义Java 对象和数据表之间的映射关系,同时在更深的层面将数据表之间的关系解释为Java 对象之间的继承及包含等关系。
SSH_三大框架介绍
![SSH_三大框架介绍](https://img.taocdn.com/s3/m/c71b1bb4f71fb7360b4c2e3f5727a5e9846a274c.png)
SSH_三大框架介绍SSH是指Struts、Spring和Hibernate三个开源框架的整合,其中每个框架都有自己的设计思想和特点,通过整合,可以充分发挥它们的优势,提高开发效率和系统性能。
下面将分别介绍这三个框架。
1. Struts:Struts是一个基于MVC设计模式的Web应用程序框架,它将应用程序分为三个层:模型(Model)、视图(View)和控制器(Controller)。
模型负责处理业务逻辑,视图负责展示数据,控制器负责接收用户输入和导航请求。
Struts通过配置文件定义请求的映射和处理逻辑,通过统一的控制器Servlet接收请求,根据配置文件将请求转发给相应的Action。
在Action中进行请求处理和业务逻辑的实现。
2. Spring:Spring是一个轻量级的IoC(Inverse of Control)容器和应用程序框架,它主要解决企业应用中的复杂性问题。
Spring的核心思想是面向接口编程和依赖注入。
通过Spring的IoC容器管理对象的生命周期和依赖关系,将对象的创建和销毁过程交给容器处理。
通过依赖注入,可以将对象之间的依赖关系解耦,提高代码的可维护性和可测试性。
Spring还提供了丰富的功能模块,如AOP(Aspect-Oriented Programming)框架、事务管理、远程调用等,可以在应用程序中灵活地配置和使用。
Spring的优点是具有良好的灵活性和扩展性,可以与其他框架进行无缝集成,支持多种数据库和应用服务器。
同时,Spring还提供了很强的层次化管理和面向切面编程的能力,使得开发人员可以更加精细地控制应用程序的流程和行为。
3. Hibernate:Hibernate是一个开源的对象关系映射框架,用于将Java对象映射到关系数据库中的表结构上。
Hibernate通过配置文件和注解,提供了一种方便的方式来实现数据的持久化和检索。
Hibernate根据对象的映射关系,自动生成相应的SQL语句,实现了对象与数据库之间的映射和转换。
SSH三大框架(StrutsSpringHibernate)
![SSH三大框架(StrutsSpringHibernate)](https://img.taocdn.com/s3/m/d405142202d8ce2f0066f5335a8102d276a261fd.png)
SSH三大框架(StrutsSpringHibernate)struts0、Struts1工作流程:(1)检索和用户请求匹配的ActionMapping实例。
如果不存在此示例,就返回用户请求路径无效。
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
(3)根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm的validate()方法。
(4)如果ActionForm的validate()方法返回null或返回的ActionErrors对象里不包含ActionMessage对象,就表示表单验证成功。
(5)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。
如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
(6)Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象所指向的JSP 组件。
(7)通过ActionForward对象指向的JSP组件生成动态网页,返回给客户端。
1、Struts2工作流程:(包含拦截器处理部分,详细描述)1、客户端向Servlet容器(如Tomcat)提交一个请求2、请求经过一系列过滤器(如ActionContextCleanUp (已被JVM和WEB容器废弃的空对象) 过滤器等)3、核心控制器被调用,询问ActionMapper来决定请求是否需要调用某个Action ?4、如果ActionMapper决定需要调用某个Action,核心控制器把控制权委派给ActionProxy (备注:JSP请求无需调用Action)5、ActionProxy通过Configuration Manager询问框架的配置文件(struts.xml),找到需调用的Action类6、ActionProxy创建一个ActionInvocation的实例,(ActionInvocation的作用是如何执行Action,拦截器的功能就是在ActionInvocation中实现的)7、ActionInvocation负责调用Action,在此之前会依次调用所有配置的拦截器8、Action执行完毕,ActionInvocation负责根据结果码字符串在struts.xml的配置中找到对应的返回结果9、拦截器被再次执行10、过滤器被再次执行2、Struts1和Struts2区别:1、Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO2、线程模型方面:Struts1的Action工作在单例模式,一个Action的实例处理所有的请求。
Struts1、Struts2、Hibernate、Spring框架工作原理介绍
![Struts1、Struts2、Hibernate、Spring框架工作原理介绍](https://img.taocdn.com/s3/m/0f692cf3102de2bd9605887e.png)
Struts1、Struts2、Hibernate、Spring框架工作原理介绍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、响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户。
Struts1优缺点(为什么要用strust1)1.优点:①开源的框架,结构清晰②是MVC的经典实现(MVC是一种思想,而不是一种技术)③处理异常机制,实现国际化④具有强大的标签库⑤解决了JSP页面存在大量的JAVA代码,维护起来方便⑥在formBean中会自动提交,不会去使用传统的get、set方法得到值、取值2.缺点:①配置复杂②测试不方便③依赖web容器④action是一个单例模式,必须设置为线程安全Struts2工作原理struts2工作原理图1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6 ActionProxy创建一个ActionInvocation的实例。
Java开源框架:Struts、Spring、Hibernate和iBatis
![Java开源框架:Struts、Spring、Hibernate和iBatis](https://img.taocdn.com/s3/m/1cb0055d793e0912a21614791711cc7931b77883.png)
Java开源框架:Struts、Spring、Hibernate和iBatis 引言在当今软件开发领域,Java是最受欢迎的编程语言之一。
与此同时,Java开源框架也变得越来越流行。
这些框架提供了丰富的功能和工具,使开发人员能够更快速、更高效地构建和维护Java应用程序。
本文将重点介绍四个最受欢迎的Java 开源框架:Struts、Spring、Hibernate和iBatis。
第一章:Struts框架1.1 框架简介Struts是一个基于MVC架构的Web应用程序开发框架。
它通过将应用程序的业务逻辑、数据模型和用户界面分离,使开发人员能够更好地组织和管理代码。
Struts提供了一个可扩展的框架,包括控制器、模型和视图组件。
1.2 核心组件Struts框架的核心组件包括Action类、ActionForm类、配置文件和标签库。
Action类处理用户请求,并将结果返回给用户。
ActionForm类用于封装用户请求的数据。
配置文件用于配置整个应用程序的行为。
标签库提供了用于生成动态HTML页面的标签。
1.3 优点和应用场景Struts框架具有以下优点:- 提供了丰富的功能和工具,如表单验证、国际化支持和异常处理。
- 可以与其他Java技术和框架无缝集成,如Hibernate和Spring。
- 适用于开发大型、复杂的Web应用程序。
第二章:Spring框架2.1 框架简介Spring是一个轻量级的Java开源框架,用于构建企业级Java应用程序。
它提供了依赖注入(DI)和面向切面编程(AOP)等功能,使开发人员能够更容易地编写可测试、可维护和可扩展的代码。
2.2 核心组件Spring框架的核心组件包括IoC容器、AOP模块、数据访问模块和Web模块。
IoC容器负责管理应用程序中的对象,并处理它们之间的依赖关系。
AOP模块提供了面向切面编程的支持。
数据访问模块提供了对数据库的访问功能。
Web 模块用于构建Web应用程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。
由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。
首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command 模式,每个继承Action的子类都必须实现一个方法execute。
struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。
Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。
Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
Struts框架可分为以下四个主要部分: 1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-config.xml文件描述的配置信息的。
2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。
3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。
4、一堆用来做XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息的(这样一来就实现了应用系统的多语言支持)。
Hibernate Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。
它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。
大多数应用程序都需要处理数据。
Java应用程序运行时,往往把数据封装为相互连接的对象网络,但是当程序结束时,这些对象就会消失在一团逻辑中,所以需要有一些保存它们的方法。
有时候,甚至在编写应用程序之前,数据就已经存在了,所以需要有读入它们和将其表示为对象的方法。
手动编写代码来执行这些任务不仅单调乏味、易于出错,而且会占用整个应用程序的很大一部分开发工作量。
优秀的面向对象开发人员厌倦了这种重复性的劳动,他们开始采用通常的“积极”偷懒做法,即,创建工具,使整个过程自动化。
对于关系数据库来说,这种努力的最大成果就是对象/关系映射(ORM)工具。
这类工具有很多,从昂贵的商业产品到内置于J2EE中的EJB标准。
然而,在很多情况下,这些工具具有自身的复杂性,使得开发人员必须学习使用它们的详细规则,并修改组成应用程序的类以满足映射系统的需要。
由于这些工具为应付更加严格和复杂的企业需求而不断发展,于是在比较简单和常见的场景中,使用它们所面临的复杂性反而盖过了所能获得的好处。
这引起了一场革命,促进了轻量级解决方案的出现,而Hibernate就是这样的一个例子。
Hibernate的工作方式 Hibernate不会对您造成妨碍,也不会强迫您修改对象的行为方式。
它们不需要实现任何不可思议的接口以便能够持续存在。
惟一需要做的就是创建一份XML“映射文档”,告诉Hibernate您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。
与其他解决方案相比,它几乎已经很完美了。
由于本文只是一篇介绍性的文章,所以不会引入构建和使用Hibernate映射文档的具体例子(我在《Hibernate: A Developer's Notebook》一书的头几章中已经介绍了一个例子)。
此外,在网上和Hibernate的在线文档中,还可以找到一些不错的例子,请参见下面的“其他信息”部分。
它实际上相当直观。
应用程序对象中的属性以一种简单而自然的方式与正确的数据库结构相关联。
运行时,Hibernate读取映射文档,然后动态构建Java类,以便管理数据库与Java之间的转换。
在Hibernate中有一个简单而直观的API,用于对数据库所表示的对象执行查询。
要修改这些对象,(一般情况下)只需在程序中与它们进行交互,然后告诉Hibernate保存修改即可。
类似地,创建新对象也很简单;只需以常规方式创建它们,然后告诉Hibernate有关它们的信息,这样就能在数据库中保存它们。
Hibernate API学习起来很简单,而且它与程序流的交互相当自然。
在适当的位置调用它,就可以达成目的。
它带来了很多自动化和代码节省方面的好处,所以花一点时间学习它是值得的。
而且还可以获得另一个好处,即代码不用关心要使用的数据库种类(否则的话甚至必须知道)。
我所在的公司就曾有过在开发过程后期被迫更换数据库厂商的经历。
这会造成巨大的灾难,但是借助于Hibernate,只需要简单地修改Hibernate配置文件即可。
这里的讨论假定您已经通过创建Hibernate映射文档,建立了一个关系数据库,并且拥有要映射的Java类。
有一个Hibernate“工具集”可在编译时使用,以支持不同的工作流。
例如,如果您已经拥有Java类和映射文档,Hibernate可以为您创建(或更新)必需的数据库表。
或者,仅仅从映射文档开始,Hibernate也能够生成数据类。
或者,它可以反向设计您的数据库和类,从而拟定映射文档。
还有一些用于Eclipse的alpha 插件,它们可以在IDE中提供智能的编辑支持以及对这些工具的图形访问。
如果您使用的是Hibernate 2环境,这些工具鲜有提供,但是存在可用的第三方工具。
使用Hibernate的场合 既然Hibernate看起来如此灵活好用,为什么还要使用其他的工具呢?下面有一些场景,可以帮助您做出判断(或许通过提供一些比较和上下文,可以有助于鉴别非常适用Hibernate的场合)。
如果应用对于数据存储的需要十分简单——例如,您只想管理一组用户优先选择——您根本不需要数据库,更不用说一个优秀的对象-关系映射系统了(即使它也如Hibernate这般易于使用)!从Java 1.4开始,有一个标准的Java Preferences API可以很好地发挥这个作用。
(在ONJava文章中可以找到有关Preferences API的更多信息。
) 对于熟悉使用关系数据库和了解如何执行完美的SQL查询与企业数据库交互的人来说,Hibernate似乎有些碍手碍脚,这就像带有动力和自动排挡的快艇车会使注重性能的赛车驾驶员不耐烦一样。
如果您属于这种人,如果您所在的项目团队拥有一个强大的DBA,或者有一些存储过程要处理,您可能想研究一下iBATIS。
Hibernate的创建者本身就把iBATIS当作是另一种有趣的选择。
我对它很有兴趣,因为我们曾为一个电子商务站点开发了一个类似的系统(其功能更为强大),而且从那时到现在,我们已经在其他环境中使用过它,尽管在发现Hibernate之后,在新项目中我们通常更喜欢使用Hibernate。
您可以认为,以SQL为中心的解决方案(比如iBATIS)是“反向的”对象/关系映射工具,而Hibernate是一个更为传统的ORM。
当然,还有其他的外部原因会导致采用另外的方法。
比如,在一个企业环境中,必须使用成熟的EJB架构(或者其他的一些非普通对象映射系统)。
可以为提供自己的数据存储工具的平台量身定做代码,比如Mac OS X's Core Data。
使用的可能是像XML DTD这样的存储规范,而它根本不涉及关系数据库。
但是,如果您使用的是富对象模型,而且想要灵活、轻松且高效地保存它(无论您是否正要开始或已经决定使用关系数据库,只要这是一个选择——而且存在可用的优秀免费数据库,比如MySQL,或可嵌入Java的HSQLDB,它就应该始终是一个选择),那么Hibernate很可能就是您理想的选择。
您可能会惊讶于节省的时间之多,以及您将会多么地喜欢使用它。
springSpring是一个开源框架,它由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)和事务()管理)进行内聚性的开发。
应用对象只实现它们应该做的——完成业务逻辑——仅此而已。
它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
■ 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。