WEB-INF/config下配置文件

来源:互联网 发布:公司网络维护外包协议 编辑:程序博客网 时间:2024/05/19 16:22
  在WEB-INF/config下有多种配置文件,这里作个介绍,对项目的开发很有意义    
  主要涉及到了struts(struts-config文件夹下)   、spring(app-config文件夹下)   、struts和spring的结合处理(action-servlets-config文件夹下)   、    
  模版技术(tiles-config文件夹下)   、验证技术(validation-config文件夹下)    
   
  到这里,或许会留意到没有提及hibernate,有关hibernate的设置,也是通过spring来配置的,在后面的spring文件中会看到,有关hibernate.cfg.xml则存放在classpath下,需要用到的hibernate属性配置信息hibernate.properties也存放在classpath下    
   
  这些配置信息是整个系统的装配总线,通过这些xml的配置,把所有的资源串在了一起。    
   
  这里还要强调一个信息,这些配置文件都是按照功能模块来划分的,比如现在讲解的这个系统中,除了默认的default外,还划分了order(订单处理系统)、admin(后台管理系统),这样设置的优势在于很好的扩展系统,降低耦合性,同时条理也比较清晰,便于管理。    
   
  下面分别介绍一下各个主要的配置文件内容    
  1、struts(struts-config文件夹下)    
  struts-config文件夹下主要有struts-config-default.xml、struts-config-admin.xml、struts-config-order.xml三个配置文件    
  这里放置的是有关struts的配置信息,比如form-bean、action,有关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类,它是通过struts和spring的结合处理(action-servlets-config文件夹下)的配置文件来实现的,这样action类也纳入到了spring容器的管理体系中去了。    
   
  struts和spring的结合就是这样来实现的,当然除了这种方式以外还有其他的,可以参考:关于struts中validate的几种情况    
  除了以上的配置信息外,还有几个重要的配置,它是结合Spring、Tiles、Validator等框架的润滑剂,主要是通过Struts的plug-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、spring(app-config文件夹下)    
  app-config文件夹下主要有applicationContext_default.xml、applicationContext_admin.xml、applicationContext_order.xml、applicationContext.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(通用的事务代理,这样所有的Service、Facade都可以继承这个事务代理)    
  这里定义的都是些基础设施,可以看到都是framework.base下的类    
   
  dataAccessContext-local.xml--定义本地数据源信息    
  说明:为了系统运作的简单化,这里设置了本地数据源信息(以local为标志),当然如果为了分布式运作,采用jta事务,可以定义相应的设置    
  这里主要定义了数据源dataSource、hibernate的SessionFactory(mySessionFactory)、hibernate的事务管理器(myTransactionManager)、共通的访问数据库接口commonDAO(com.iplan.portal.framework.base.hibernate.CommonDAO)    
   
  以上两个都是系统运作的基础,其间有一些联系,大家可以参照一下具体的配置文件即可    
   
  其它的三个配置文件都是按照功能模块来划分的,都是具体业务方面的信息,这里不在详细描述,可以自行参考配置文件    
   
  3、struts和spring的结合处理(action-servlets-config文件夹下)    
  action-servlets-config文件夹下主要有action-servlets-default.xml、action-servlets-admin.xml、action-servlets-order.xml    
  这里是action在spring容器下的配置,举例如下:    
  <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配置已经移植到了Spring的dataAccessContext-local.xml配置文件中去了    
   
  hibernate.properties    
  设置一些有关hibernate的属性信息,比如:driver、url、username、password、dialect、Connection   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信息(spring(app-config文件夹下)),加载springapp-config文件夹下的配置信息    
  HSQLDB数据库    
  启动struts的ActionServlet,相应的config被加载    
  第二步,从第一步可以看到struts(struts-config文件夹下)、spring(app-config文件夹下)都已经被加载    
  那么struts和spring的结合处理(action-servlets-config文件夹下)、模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)如何被加载呢?    
  struts和spring的结合处理(action-servlets-config文件夹下)通过struts(struts-config文件夹下)下的struts-config-default.xml加载    
  模版技术(tiles-config文件夹下)、验证技术(validation-config文件夹下)分别通过struts(struts-config文件夹下)下的各个对应的功能模块配置文件加载    
  通过以上两步加载,把五个大的配置信息都加载到系统中去了    
   
  以上是关系系统配置文件的一些说明,希望通过这些能对整个系统的架构有一个比较清晰的了解