好·色之徒
已经转移到 好·色之徒--我的博客、我的生活
 
从配置文件说起
在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的配置
这里举例一个配置片断:

type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" validate="true" input="/WEB-INF/jsp/login.jsp">



注意里面的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技术来实现的,举例如下:

className="org.springframework.web.struts.ContextLoaderPlugIn">

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" />

通过Spring框架的ContextLoaderPlugIn,把action类交由Spring容器来管理
这里需要说明的一点是:是否需要在struts-config-default.xml文件中一起加载所有的action-servlets信息,还是对应着分别加载。当然现在的系统中是一起加载的,不过如果分开加载,也可以很好的分模块开发,这边只是探讨,作个说明而已。


value="/WEB-INF/config/tiles-config/tiles-defs-default.xml" />


实现Tiles技术的嫁接


value="/WEB-INF/config/validation-config/validator-rules-default.xml,
/WEB-INF/config/validation-config/validation-default.xml" />

在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容器下的配置,举例如下:

class="com.iplan.portal.start.action.LoginAction">




这里的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文件夹下)下的各个对应的功能模块配置文件加载
通过以上两步加载,把五个大的配置信息都加载到系统中去了
以上是关系系统配置文件的一些说明,希望通过这些能对整个系统的架构有一个比较清晰的了解
已经转移到 好·色之徒--我的博客、我的生活

Feedback

# re: 采用struts+hibernate+spring开发的一个web系统(3)  回复  更多评论   

2006-10-11 10:03 by 123bingbing
www.mylinux.com.cn 包罗java,linux,数据库,安全等等技术资料,更有众多软件外包项目,所有项目直接与mylinux签署合同,保证用户的合法权利.
qq群:15096318(已满) 26343297(已满) 26343309(已满) 20767472(已满) 30440614(已满)21189212(已满)

# re: 采用struts+hibernate+spring开发的一个web系统(3)  回复  更多评论   

2006-10-13 14:04 by 1
如果你是编程高手,这里将是你一个展现自我的新舞台----www.mylinux.com.cn

# re: 采用struts spring hibernate开发的一个web系统(3)[未登录]  回复  更多评论   

2008-04-29 10:38 by 温柔一刀
applicationContxt.xml文件在那里?

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

posts - 39, comments - 91, trackbacks - 0, articles - 1

Copyright © 城市劣人

好·色之徒