您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > Struts2.0+Spring2.5+Hibernate3.2框架
Struts2.0+Spring2.5+Hibernate3.2框架1.系统架构:采用J2EE的三层结构,分为表现层、业务逻辑层和数据服务层。三层体系将业务规则、数据访问等工作放到中间层处理,客户不直接与数据库交互,而是通过控制器与中间层建立连接,再由中间层与数据库交互。中间层采用Spring+Hibernate,为了分离控制器与业务层,又可细分为:控制器层,负责表现层与业务逻辑层的交互,调用业务逻辑层,并将业务数据返回给表现层作显示。MVC框架采用流行的struts2Service层(业务逻辑层),负责实现业务,对DAO对象进行正面模式的封装DAO(数据访问层),负责与持久化对象交互,封装了数据的增、删、查、改原子操作PO层(持久化对象层),通过实体/关系的映射工具,将关系型数据库的数据映射成对象,实现以面向对象方式操作数据库,这个系统采用Hibernate作为O/RMapping框架。中间层是这个系统的关键所在,而Spring的作用贯穿了整个中间层,将web层、Service层、DAO、PO无缝整合。系统架构图用户界面业务数据组织和表示MVC架构模式的控制层控制业务逻辑层与表现层的交互业务逻辑的实现层数据访问对象与持久化对象交互通过实体-关系映射O-RMapping由数据库表得来对象存放数据视图层Web层Service层DAO层持久化对象数据服务层Struts2Spring2.5+Hibernate3.2系统业务流程图应用程序的分层,多数web应用程序都能至少分为4个各负其责层次,这些层次依次为:表现层、业务层、领域模型层、持久层,每个层次在应用程序中都有明确的责任,不应该和其它层次的职责发生混淆。每个层次功能是彼此独立的,但是都应提供通讯接口,以便其它层次使用本层次的功能。Struts负责的:·为用户管理请求和响应;·提供一个控制器代理调用业务逻辑和其它上层处理;·处理从其它层掷出给一个StrutsAction的异常;·为显示提供一个模型;·执行用户接口验证。业务层在一个典型的web应用程序的中间的组件是业务层或服务层。从编码的视角来看,这个服务层是最容易被忽视的一层。不难在用户接口层或者持久层里找到散布在其中的这种类型的代码。这不是正确的地方,因为这导致了应用程序的紧耦合,这样一来,随着时间推移代码将很难维护。在这个领域两个最流行的框架是Spring和PicoContainer,它们叫作微容器,可以不费力不费神的把你的对象连在一起。所有这些框架都工作在一个简单的叫作“依赖注入”(也通称“控制反转”)的概念上。业务层应该负责下面这些事情:·处理应用程序的业务逻辑和业务验证;·管理事务;·预留和其它层交互的接口;·管理业务层对象之间的依赖;中间层MVC框架Web浏览器JSP页面Struts的核心控制器业务控制器ActionActionManager后台服务·增加在表现层和持久层之间的灵活性,使它们互不直接通讯;·从表现层中提供一个上下文给业务层获得业务服务;·管理从业务逻辑到持久层的实现。领域模型层基于web的应用程序,需要一组能在不同的层之间移动的对象。领域对象层由那些代表现实世界中的业务对象的对象们组成。这个层让开发者停止建立和维护不必要的数据传输对象(或者叫作DTOs),来匹配他们的领域对象。例如,Hibernate允许你把数据库信息读进领域对象的一个对象图,这样可以在连接断开的情况下把这些数据显示到UI层。那些对象也能被更新和送回到持久层并在数据库里更新。而且,不必把对象转化成DTOs,因为DTOs在不同的应用层间移动,可能在转换中丢失。这个模型使得Java开发者自然地以一种面向对象的风格和对象打交道,没有附加的编码。持久层在典型web应用的另一端是持久层。查询相关的信息成为对象。保存、更新、删除储存在数据库中的信息。其中模型层、持久化层、数据库层之间的关系是上层依赖下层,而下层对上一层依赖很少。模型层实际上又分为数据访问层(DAO)和数据管理层(Manager)。系统使用Hibernate来实现持久化层,在这一层使用DAO模式。DAO模式是J2EE核心模式中的一种,其主要行为就是在业务核心方法和具体数据源之间在再加一层,用这一层来连接业务方法和数据源,从而实现解耦,使得系统非常容易在各个数据库之间移植。在DAO模式种,每一个持久化类都对应一个DAO,而一个DAO包括接口和实现。接口说明持久化类的操作方法,如CRUD操作,在接口的实现中则是具体使用hibernateAPI来实现接口。对与上层来说,只需要调用接口中的方法即可。DAO模式一般和工厂方法联合使用的。通过一个工厂方法来产生所有DAO接口。DAO是DataAccessObject数据访问接口,位于业务层和数据层之间。DAO的主要功能:(1)DAO用来封装DataSource的,比如Connectionconn=DAOFactory.createConnection().这样就可以把Drive.URL.username,password这一些放在DAO中。以后要改变数据库的类型,比如把MSSQL换为Oracle的话,只需更该DAOFactory里面的getConnection()的Driver.URL就行。(2)DAO也是把对数据库的操作(比如最为基本的CRUD操作)全部封装在里面。要插入一个新的用户,那么在DAO中只需提供一个insertUser(Useruser)这个方法就可以了。具体操作在DAO中实现。一般DAO是与AbstrFactory模式一起使用的。Factory用来建立数据库和定位具体的DAO(比如是UserDao还是CustomerDao)。一般将getConnection设置为static,也可以把HibernateSessionFactory这个公共类放在AbstractFactory类中去。PublicclassDAOFactory{PrivatestaticfinalSessionFactorysessionFactory;StaticSessioncurrentSession()PublicUserDaogetUserDAO(){ReturnnewUserDaoImpl(session);}PublicotherDaogetOtherDAO(){}PublicinterfaceUserDao{PublicinsertUser(FormBean);PublicupdateUser(FormBean);}//然后实现DAO接口PublicclassUserDaoImplimplementsUserDao{PrivateSessionsession;PublicUserDaoImpl(Sessionsession){This.session=session;}PublicinsertUser(FormBean){//Session.save(UserPO);//ReturnFormBean;}PublicFormBeanupdateUser(FormBean){//Session.update(UserPO);//ReturnFormBean;}}}最后定义POPublicclassuserPO{Stringfirstname,lastname,password…}开发工具:myeclipse6.5Web服务器:Tomcat6.0数据库服务器SQLServer20002.Struts2.0框架Struts2框架可以分为3个部分,即核心控制器FilterDispatcher、业务控制器action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是struts2框架的基础,包含框架内部的控制流程和处理机制。业务控制器action和企业业务逻辑组件是要用户自己实现的。业务逻辑控制器action的execute()返回一个String类型的值,Struts2提供一个ActionSupport工具类,该类实现了action接口和validate()方法,一般开发人员编写action可以直接继承ActionSupport类。编写Action类之后,还要在xml文件中配置action,一个action包括一下几个方面:该action的name,即用户请求所指向的URLAction所对应的class名称,对应于action类的位置指定result逻辑名称和实际资源的定位注意:Action中,不实现任何的业务逻辑,只是负责组织调度业务逻辑组件。Struts2框架是基于MVC模式开发的,提供一个核心的控制器,用于对所有的请求进行统一的处理。这个控制器的名字就是FilterDispatcher的servlet过滤器来充当。需要在web.xml文件中配置FilterDispatcher,制定要映射到FilterDispatcher的URL样式,匹配这个URL请求,都将被web容器交由FilterDispatcher进行处理。Struts2使用action代理,Action代理可以根据系统配置,加载一系列拦截器,由拦截器将HttpServletRequest参数解析出来,再传入action。同样action处理结果也通过拦截器传入HttpServletResponse,然后由HttpServletRequest传给用户,这个过程就是典型的AOP。Action就是一段只有特定的URL被请求时才会执行的代码。当一个action创建完成之后,需要为其配置一个URL,只有这样FilterDispatcher才知道是哪个URL对应哪个action,当截获访问该URL的请求时,FilterDispatcher就知道调用对应的action对请求进行处理。FilterDispatcher根据请求URL不同,来执行不同的action,action执行的结果通常都对应一个要呈现给用户的result,这个result就是HTML页面,也可以是一个PDF或是Excel电子表,action与其对应的result是在struts.xml的配置文件中进行配置的。业务控制器Action,是由用户自己开发的,Action类实际就是一个简单的Java类,与ServletAPI完全分离。Action方法一般都有一个execute()方法,同时也可以定义其他的业务控制,execute()方法返回一个String类型的值。Struts2提供一个ActionSupport工具类,该类实现Action接口和Validate()方法。一般开发人员编写action类时,可以直接继承ActionSupport类。编写完Action类之后,必须在配置文件中培植action,一个action的配置应该包含以下几个方面:该action的name,即用户请求所指向的URLaction所对应的class元素,对应action类的位置。指定result逻辑名称和实际的资源的定位。Action是业务控制器,因此应避免将业务逻辑处理放在其中,减少action与业务逻辑模块的耦合程度。业务模型组件,实现业务逻辑的模块,可以是EJB、POJO、或者Javabean。Struts2框架的目的就是使用action来调用业务逻辑模块。2.1Struts2配置文件Struts2核心的配置文件是缺省的struts.xml,这个文件也是struts2框架主动加载的文件,在这个文件中可以定义自己的一些action、interceptor、package等。Package通常继承struts-default包。struts文件可以放入jar中,并自动插入应用程序,这样每个模块可以包含自己的配置文件并自动配置。Struts2框架一般包含两个配置文件,struts2.xml和struts.properties文件。前者定义了包、包的名称、action、拦截器、和拦截器栈等信息,主要用于struts2框架的action映射。后者是一个属性定义文件,定义struts2框架中的大量属性值、常量,开发者一般可以修改
本文标题:Struts2.0+Spring2.5+Hibernate3.2框架
链接地址:https://www.777doc.com/doc-5946102 .html