struts+spring+hibernate开发web项系统配置文件介绍

来源:互联网 发布:linux tar打包文件夹 编辑:程序博客网 时间:2024/06/09 19:56

从配置文件说起    
 
WEB-INF/config下有多种配置文件,这里作个介绍,对项目的开发很有意义
   
 
主要涉及到了strutsstruts-config文件夹下)   springapp-config文件夹下)   strutsspring的结合处理(action-servlets-config文件夹下)  
   
 
模版技术(tiles-config文件夹下)   、验证技术(validation-config文件夹下)
   
   
 
到这里,或许会留意到没有提及hibernate,有关hibernate的设置,也是通过spring来配置的,在后面的spring文件中会看到,有关hibernate.cfg.xml则存放在classpath下,需要用到的hibernate属性配置信息hibernate.properties也存放在classpath
   
   
 
这些配置信息是整个系统的装配总线,通过这些xml的配置,把所有的资源串在了一起。
   
   
 
这里还要强调一个信息,这些配置文件都是按照功能模块来划分的,比如现在讲解的这个系统中,除了默认的default外,还划分了order(订单处理系统)、admin(后台管理系统),这样设置的优势在于很好的扩展系统,降低耦合性,同时条理也比较清晰,便于管理。
   
   
 
下面分别介绍一下各个主要的配置文件内容
   
  1
strutsstruts-config文件夹下)
   
  struts-config
文件夹下主要有struts-config-default.xmlstruts-config-admin.xmlstruts-config-order.xml三个配置文件
   
 
这里放置的是有关struts的配置信息,比如form-beanaction,有关form-bean的配置和一般的struts程序没有什么两样,这里需要说明的是action的配置
   
 
这里举例一个配置片断:
   
  <action   name="loginForm"   parameter="method"   path="/loginAction"    
  type="org.springframework.web.struts.DelegatingActionProxy"    
  scope="request"   validate="true"   input="/WEB-INF/jsp/login.jsp">    
  <forward   name="success"   path="/dispatch.do?def=default"   />    
  <forward   name="failure"   path="/WEB-INF/jsp/login.jsp"   />    
  </action>    
 
注意里面的type属性,这里设置的是org.springframework.web.struts.DelegatingActionProxy,正是通过它来使得和spring很好的结合起来,这里你会发现没有具体的action类,它是通过strutsspring的结合处理(action-servlets-config文件夹下)的配置文件来实现的,这样action类也纳入到了spring容器的管理体系中去了。
   
   
  struts
spring的结合就是这样来实现的,当然除了这种方式以外还有其他的,可以参考:关于strutsvalidate的几种情况
   
 
除了以上的配置信息外,还有几个重要的配置,它是结合SpringTilesValidator等框架的润滑剂,主要是通过Strutsplug-in技术来实现的,举例如下:
   
  <plug-in    
  className="org.springframework.web.struts.ContextLoaderPlugIn">    
  <set-property   property="contextConfigLocation"    
  value="/WEB-INF/config/action-servlets-config/action-servlets-default.xml    
  /WEB-INF/config/action-servlets-config/action-servlets-order.xml    
  /WEB-INF/config/action-servlets-config/action-servlets-admin.xml"   />    
  </plug-in>    
 
通过Spring框架的ContextLoaderPlugIn,把action类交由Spring容器来管理
   
 
这里需要说明的一点是:是否需要在struts-config-default.xml文件中一起加载所有的action-servlets信息,还是对应着分别加载。当然现在的系统中是一起加载的,不过如果分开加载,也可以很好的分模块开发,这边只是探讨,作个说明而已。
   
   
  <plug-in   className="org.apache.struts.tiles.TilesPlugin">    
  <set-property   property="definitions-config"    
  value="/WEB-INF/config/tiles-config/tiles-defs-default.xml"   />    
  <set-property   property="moduleAware"   value="true"   />    
  </plug-in>    
 
实现Tiles技术的嫁接
   
   
  <plug-in   className="org.apache.struts.validator.ValidatorPlugIn">    
  <set-property   property="pathnames"    
  value="/WEB-INF/config/validation-config/validator-rules-default.xml,    
  /WEB-INF/config/validation-config/validation-default.xml"   />    
  </plug-in>    
 
Struts框架中采用Validator框架的验证机制
   
   
  2
springapp-config文件夹下)
   
  app-config
文件夹下主要有applicationContext_default.xmlapplicationContext_admin.xmlapplicationContext_order.xmlapplicationContext.xml
dataAccessContext-local.xml    
 
这里主要是设置系统所需要的业务逻辑bean,完成符合spring-beans.dtd的定义规则
   
   
 
分别解释一下各个配置文件的主要用途:
   
   
  applicationContext.xml--
定义一些共通的bean,列举如下
:    
  AbstractFacadeBean
com.iplan.portal.framework.base.BaseFacade--所有Facade的抽象类,主要完成对DAO的配置,以便为所有FACADE提供DAO支持)
   
   
  AbstractServiceBean
com.iplan.portal.framework.base.BaseService--所有ServiceImp的抽象类,主要完成对DAO的配置,以便为所有ServiceImp提供DAO支持)
   
   
  AppRelationCore
com.iplan.portal.framework.base.AppRelationCore--系统各模块间关系的维护类,既所有模块暴露的Facade通过此类来访问,每添加一个Facade模块,需要在这里追加)
   
   
  baseTransactionProxy
(通用的事务代理,这样所有的ServiceFacade都可以继承这个事务代理)
   
 
这里定义的都是些基础设施,可以看到都是framework.base下的类
   
   
  dataAccessContext-local.xml--
定义本地数据源信息
   
 
说明:为了系统运作的简单化,这里设置了本地数据源信息(以local为标志),当然如果为了分布式运作,采用jta事务,可以定义相应的设置
   
 
这里主要定义了数据源dataSourcehibernateSessionFactorymySessionFactory)、hibernate的事务管理器(myTransactionManager)、共通的访问数据库接口commonDAOcom.iplan.portal.framework.base.hibernate.CommonDAO
   
   
 
以上两个都是系统运作的基础,其间有一些联系,大家可以参照一下具体的配置文件即可
   
   
 
其它的三个配置文件都是按照功能模块来划分的,都是具体业务方面的信息,这里不在详细描述,可以自行参考配置文件
   
   
  3
strutsspring的结合处理(action-servlets-config文件夹下)
   
  action-servlets-config
文件夹下主要有action-servlets-default.xmlaction-servlets-admin.xml
action-servlets-order.xml    
 
这里是actionspring容器下的配置,举例如下:
   
  <bean   name="/loginAction"    
  class="com.iplan.portal.start.action.LoginAction">    
  <property   name="userService">    
  <ref   bean="userServiceImpl"   />    
  </property>    
  </bean>    
 
这里的name属性"/loginAction"和相应的struts配置文件中的path属性要一一对应起来,这样action类的生命周期将交由spring容器来管理了
   
   
  4
、模版技术(tiles-config文件夹下)
   
  5
、验证技术(validation-config文件夹下)
   
 
这两项就不在多做阐述了,应该应用的比较多了
   
   
 
除了WEB-INF/config下的五大类配置文件外,对其他一些需要用到的配置信息作一个比较简单的介绍
   
  hibernate.cfg.xml
   
 
设置pojo信息,相关的SessionFactory配置已经移植到了SpringdataAccessContext-local.xml配置文件中去了
   
   
  hibernate.properties    
 
设置一些有关hibernate的属性信息,比如:driverurlusernamepassworddialectConnection   Pool等等
   
   
  ApplicationResources.properties    
  i18n
国际化资源信息
   
   
  displaytag.properties    
  display
标签的配置信息
   
   
  default-db.script
default-db.properties默认的hsqldb的数据结构、数据
   
   
  log4j.properties
日志配置文件
   
   
 
最后,还有一个非常重要的配置信息:
web.xml    
 
有关于各种信息的配置,web.xml里面有比较详细的说明,这里就不在多阐述了
   
   
 
这里描述一下应用服务器启动后,如何加载这些配置信息已供应用系统运作的
   
 
第一步,当然是读取web.xml中的配置信息,可以启动
   
  Log4j
信息
   
 
通过ContextLoaderListener、读取contextConfigLocation信息(springapp-config文件夹下)),加载springapp-config文件夹下的配置信息
   
  HSQLDB
数据库
   
 
启动strutsActionServlet,相应的config被加载
   
 
第二步,从第一步可以看到strutsstruts-config文件夹下)、springapp-config文件夹下)都已经被加载
   
 
那么strutsspring的结合处理(action-servlets-config文件夹下)、模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)如何被加载呢?
   
  struts
spring的结合处理(action-servlets-config文件夹下)通过strutsstruts-config文件夹下)下的struts-config-default.xml加载
   
 
模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)分别通过strutsstruts-config文件夹下)下的各个对应的功能模块配置文件加载
   
 
通过以上两步加载,把五个大的配置信息都加载到系统中去了
   
   
 
以上是关系系统配置文件的一些说明,希望通过这些能对整个系统的架构有一个比较清晰的了解

原创粉丝点击