采用struts spring hibernate開(kāi)發(fā)的一個(gè)web系統(tǒng)(3)
Posted on 2006-10-10 17:24 城市劣人 閱讀(2075) 評(píng)論(3) 編輯 收藏已經(jīng)轉(zhuǎn)移到 好·色之徒--我的博客、我的生活
?
從配置文件說(shuō)起
在WEB-INF/config下有多種配置文件,這里作個(gè)介紹,對(duì)項(xiàng)目的開(kāi)發(fā)很有意義
主要涉及到了struts(struts-config文件夾下) 、spring(app-config文件夾下) 、struts和spring的結(jié)合處理(action-servlets-config文件夾下) 、 模版技術(shù)(tiles-config文件夾下) 、驗(yàn)證技術(shù)(validation-config文件夾下)
到這里,或許會(huì)留意到?jīng)]有提及hibernate,有關(guān)hibernate的設(shè)置,也是通過(guò)spring來(lái)配置的,在后面的spring文件中會(huì)看到,有關(guān)hibernate.cfg.xml則存放在classpath下,需要用到的hibernate屬性配置信息hibernate.properties也存放在classpath下
這些配置信息是整個(gè)系統(tǒng)的裝配總線,通過(guò)這些xml的配置,把所有的資源串在了一起。
這里還要強(qiáng)調(diào)一個(gè)信息,這些配置文件都是按照功能模塊來(lái)劃分的,比如現(xiàn)在講解的這個(gè)系統(tǒng)中,除了默認(rèn)的default外,還劃分了order(訂單處理系統(tǒng))、admin(后臺(tái)管理系統(tǒng)),這樣設(shè)置的優(yōu)勢(shì)在于很好的擴(kuò)展系統(tǒng),降低耦合性,同時(shí)條理也比較清晰,便于管理。
下面分別介紹一下各個(gè)主要的配置文件內(nèi)容
1、struts(struts-config文件夾下)
struts-config文件夾下主要有struts-config-default.xml、struts-config-admin.xml、struts-config-order.xml三個(gè)配置文件
這里放置的是有關(guān)struts的配置信息,比如form-bean、action,有關(guān)form-bean的配置和一般的struts程序沒(méi)有什么兩樣,這里需要說(shuō)明的是action的配置
這里舉例一個(gè)配置片斷:
type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" validate="true" input="/WEB-INF/jsp/login.jsp">
注意里面的type屬性,這里設(shè)置的是org.springframework.web.struts.DelegatingActionProxy,正是通過(guò)它來(lái)使得和spring很好的結(jié)合起來(lái),這里你會(huì)發(fā)現(xiàn)沒(méi)有具體的action類,它是通過(guò)struts和spring的結(jié)合處理(action-servlets-config文件夾下)的配置文件來(lái)實(shí)現(xiàn)的,這樣action類也納入到了spring容器的管理體系中去了。
struts和spring的結(jié)合就是這樣來(lái)實(shí)現(xiàn)的,當(dāng)然除了這種方式以外還有其他的,可以參考:關(guān)于struts中validate的幾種情況
除了以上的配置信息外,還有幾個(gè)重要的配置,它是結(jié)合Spring、Tiles、Validator等框架的潤(rùn)滑劑,主要是通過(guò)Struts的plug-in技術(shù)來(lái)實(shí)現(xiàn)的,舉例如下:
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" />
通過(guò)Spring框架的ContextLoaderPlugIn,把a(bǔ)ction類交由Spring容器來(lái)管理
這里需要說(shuō)明的一點(diǎn)是:是否需要在struts-config-default.xml文件中一起加載所有的action-servlets信息,還是對(duì)應(yīng)著分別加載。當(dāng)然現(xiàn)在的系統(tǒng)中是一起加載的,不過(guò)如果分開(kāi)加載,也可以很好的分模塊開(kāi)發(fā),這邊只是探討,作個(gè)說(shuō)明而已。
value="/WEB-INF/config/tiles-config/tiles-defs-default.xml" />
實(shí)現(xiàn)Tiles技術(shù)的嫁接
value="/WEB-INF/config/validation-config/validator-rules-default.xml,
/WEB-INF/config/validation-config/validation-default.xml" />
在Struts框架中采用Validator框架的驗(yàn)證機(jī)制
2、spring(app-config文件夾下)
app-config文件夾下主要有applicationContext_default.xml、applicationContext_admin.xml、applicationContext_order.xml、applicationContext.xml、dataAccessContext-local.xml
這里主要是設(shè)置系統(tǒng)所需要的業(yè)務(wù)邏輯bean,完成符合spring-beans.dtd的定義規(guī)則
分別解釋一下各個(gè)配置文件的主要用途:
applicationContext.xml--定義一些共通的bean,列舉如下:
AbstractFacadeBean(com.iplan.portal.framework.base.BaseFacade--所有Facade的抽象類,主要完成對(duì)DAO的配置,以便為所有FACADE提供DAO支持)
AbstractServiceBean(com.iplan.portal.framework.base.BaseService--所有ServiceImp的抽象類,主要完成對(duì)DAO的配置,以便為所有ServiceImp提供DAO支持)
AppRelationCore(com.iplan.portal.framework.base.AppRelationCore--系統(tǒng)各模塊間關(guān)系的維護(hù)類,既所有模塊暴露的Facade通過(guò)此類來(lái)訪問(wèn),每添加一個(gè)Facade模塊,需要在這里追加)
baseTransactionProxy(通用的事務(wù)代理,這樣所有的Service、Facade都可以繼承這個(gè)事務(wù)代理)
這里定義的都是些基礎(chǔ)設(shè)施,可以看到都是framework.base下的類
dataAccessContext-local.xml--定義本地?cái)?shù)據(jù)源信息
說(shuō)明:為了系統(tǒng)運(yùn)作的簡(jiǎn)單化,這里設(shè)置了本地?cái)?shù)據(jù)源信息(以local為標(biāo)志),當(dāng)然如果為了分布式運(yùn)作,采用jta事務(wù),可以定義相應(yīng)的設(shè)置 這里主要定義了數(shù)據(jù)源dataSource、hibernate的SessionFactory(mySessionFactory)、hibernate的事務(wù)管理器
(myTransactionManager)、共通的訪問(wèn)數(shù)據(jù)庫(kù)接口commonDAO(com.iplan.portal.framework.base.hibernate.CommonDAO)
以上兩個(gè)都是系統(tǒng)運(yùn)作的基礎(chǔ),其間有一些聯(lián)系,大家可以參照一下具體的配置文件即可
其它的三個(gè)配置文件都是按照功能模塊來(lái)劃分的,都是具體業(yè)務(wù)方面的信息,這里不在詳細(xì)描述,可以自行參考配置文件
3、struts和spring的結(jié)合處理(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"和相應(yīng)的struts配置文件中的path屬性要一一對(duì)應(yīng)起來(lái),這樣action類的生命周期將交由spring容器來(lái)管理了
4、模版技術(shù)(tiles-config文件夾下)
5、驗(yàn)證技術(shù)(validation-config文件夾下)
這兩項(xiàng)就不在多做闡述了,應(yīng)該應(yīng)用的比較多了
除了WEB-INF/config下的五大類配置文件外,對(duì)其他一些需要用到的配置信息作一個(gè)比較簡(jiǎn)單的介紹
hibernate.cfg.xml:
設(shè)置pojo信息,相關(guān)的SessionFactory配置已經(jīng)移植到了Spring的dataAccessContext-local.xml配置文件中去了
hibernate.properties
設(shè)置一些有關(guān)hibernate的屬性信息,比如:driver、url、username、password、dialect、Connection Pool等等
ApplicationResources.properties
i18n國(guó)際化資源信息
displaytag.properties
display標(biāo)簽的配置信息
default-db.script、default-db.properties默認(rèn)的hsqldb的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)
log4j.properties日志配置文件
最后,還有一個(gè)非常重要的配置信息:web.xml
有關(guān)于各種信息的配置,web.xml里面有比較詳細(xì)的說(shuō)明,這里就不在多闡述了
這里描述一下應(yīng)用服務(wù)器啟動(dòng)后,如何加載這些配置信息已供應(yīng)用系統(tǒng)運(yùn)作的
第一步,當(dāng)然是讀取web.xml中的配置信息,可以啟動(dòng)
Log4j信息
通過(guò)ContextLoaderListener、讀取contextConfigLocation信息(spring(app-config文件夾下)),加載springapp-config文件夾下的配置信息
HSQLDB數(shù)據(jù)庫(kù)
啟動(dòng)struts的ActionServlet,相應(yīng)的config被加載
第二步,從第一步可以看到struts(struts-config文件夾下)、spring(app-config文件夾下)都已經(jīng)被加載
那么struts和spring的結(jié)合處理(action-servlets-config文件夾下)、模版技術(shù)(tiles-config文件夾下)、驗(yàn)證技術(shù)(validation-config文件夾下)如何被加載呢?
struts和spring的結(jié)合處理(action-servlets-config文件夾下)通過(guò)struts(struts-config文件夾下)下的struts-config-default.xml加載 模版技術(shù)(tiles-config文件夾下)、驗(yàn)證技術(shù)(validation-config文件夾下)分別通過(guò)struts(struts-config文件夾下)下的各個(gè)對(duì)應(yīng)的功能模塊配置文件加載
通過(guò)以上兩步加載,把五個(gè)大的配置信息都加載到系統(tǒng)中去了
以上是關(guān)系系統(tǒng)配置文件的一些說(shuō)明,希望通過(guò)這些能對(duì)整個(gè)系統(tǒng)的架構(gòu)有一個(gè)比較清晰的了解
已經(jīng)轉(zhuǎn)移到 好·色之徒--我的博客、我的生活
?
從配置文件說(shuō)起
在WEB-INF/config下有多種配置文件,這里作個(gè)介紹,對(duì)項(xiàng)目的開(kāi)發(fā)很有意義
主要涉及到了struts(struts-config文件夾下) 、spring(app-config文件夾下) 、struts和spring的結(jié)合處理(action-servlets-config文件夾下) 、 模版技術(shù)(tiles-config文件夾下) 、驗(yàn)證技術(shù)(validation-config文件夾下)
到這里,或許會(huì)留意到?jīng)]有提及hibernate,有關(guān)hibernate的設(shè)置,也是通過(guò)spring來(lái)配置的,在后面的spring文件中會(huì)看到,有關(guān)hibernate.cfg.xml則存放在classpath下,需要用到的hibernate屬性配置信息hibernate.properties也存放在classpath下
這些配置信息是整個(gè)系統(tǒng)的裝配總線,通過(guò)這些xml的配置,把所有的資源串在了一起。
這里還要強(qiáng)調(diào)一個(gè)信息,這些配置文件都是按照功能模塊來(lái)劃分的,比如現(xiàn)在講解的這個(gè)系統(tǒng)中,除了默認(rèn)的default外,還劃分了order(訂單處理系統(tǒng))、admin(后臺(tái)管理系統(tǒng)),這樣設(shè)置的優(yōu)勢(shì)在于很好的擴(kuò)展系統(tǒng),降低耦合性,同時(shí)條理也比較清晰,便于管理。
下面分別介紹一下各個(gè)主要的配置文件內(nèi)容
1、struts(struts-config文件夾下)
struts-config文件夾下主要有struts-config-default.xml、struts-config-admin.xml、struts-config-order.xml三個(gè)配置文件
這里放置的是有關(guān)struts的配置信息,比如form-bean、action,有關(guān)form-bean的配置和一般的struts程序沒(méi)有什么兩樣,這里需要說(shuō)明的是action的配置
這里舉例一個(gè)配置片斷:
type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" validate="true" input="/WEB-INF/jsp/login.jsp">
注意里面的type屬性,這里設(shè)置的是org.springframework.web.struts.DelegatingActionProxy,正是通過(guò)它來(lái)使得和spring很好的結(jié)合起來(lái),這里你會(huì)發(fā)現(xiàn)沒(méi)有具體的action類,它是通過(guò)struts和spring的結(jié)合處理(action-servlets-config文件夾下)的配置文件來(lái)實(shí)現(xiàn)的,這樣action類也納入到了spring容器的管理體系中去了。
struts和spring的結(jié)合就是這樣來(lái)實(shí)現(xiàn)的,當(dāng)然除了這種方式以外還有其他的,可以參考:關(guān)于struts中validate的幾種情況
除了以上的配置信息外,還有幾個(gè)重要的配置,它是結(jié)合Spring、Tiles、Validator等框架的潤(rùn)滑劑,主要是通過(guò)Struts的plug-in技術(shù)來(lái)實(shí)現(xiàn)的,舉例如下:
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" />
通過(guò)Spring框架的ContextLoaderPlugIn,把a(bǔ)ction類交由Spring容器來(lái)管理
這里需要說(shuō)明的一點(diǎn)是:是否需要在struts-config-default.xml文件中一起加載所有的action-servlets信息,還是對(duì)應(yīng)著分別加載。當(dāng)然現(xiàn)在的系統(tǒng)中是一起加載的,不過(guò)如果分開(kāi)加載,也可以很好的分模塊開(kāi)發(fā),這邊只是探討,作個(gè)說(shuō)明而已。
value="/WEB-INF/config/tiles-config/tiles-defs-default.xml" />
實(shí)現(xiàn)Tiles技術(shù)的嫁接
value="/WEB-INF/config/validation-config/validator-rules-default.xml,
/WEB-INF/config/validation-config/validation-default.xml" />
在Struts框架中采用Validator框架的驗(yàn)證機(jī)制
2、spring(app-config文件夾下)
app-config文件夾下主要有applicationContext_default.xml、applicationContext_admin.xml、applicationContext_order.xml、applicationContext.xml、dataAccessContext-local.xml
這里主要是設(shè)置系統(tǒng)所需要的業(yè)務(wù)邏輯bean,完成符合spring-beans.dtd的定義規(guī)則
分別解釋一下各個(gè)配置文件的主要用途:
applicationContext.xml--定義一些共通的bean,列舉如下:
AbstractFacadeBean(com.iplan.portal.framework.base.BaseFacade--所有Facade的抽象類,主要完成對(duì)DAO的配置,以便為所有FACADE提供DAO支持)
AbstractServiceBean(com.iplan.portal.framework.base.BaseService--所有ServiceImp的抽象類,主要完成對(duì)DAO的配置,以便為所有ServiceImp提供DAO支持)
AppRelationCore(com.iplan.portal.framework.base.AppRelationCore--系統(tǒng)各模塊間關(guān)系的維護(hù)類,既所有模塊暴露的Facade通過(guò)此類來(lái)訪問(wèn),每添加一個(gè)Facade模塊,需要在這里追加)
baseTransactionProxy(通用的事務(wù)代理,這樣所有的Service、Facade都可以繼承這個(gè)事務(wù)代理)
這里定義的都是些基礎(chǔ)設(shè)施,可以看到都是framework.base下的類
dataAccessContext-local.xml--定義本地?cái)?shù)據(jù)源信息
說(shuō)明:為了系統(tǒng)運(yùn)作的簡(jiǎn)單化,這里設(shè)置了本地?cái)?shù)據(jù)源信息(以local為標(biāo)志),當(dāng)然如果為了分布式運(yùn)作,采用jta事務(wù),可以定義相應(yīng)的設(shè)置 這里主要定義了數(shù)據(jù)源dataSource、hibernate的SessionFactory(mySessionFactory)、hibernate的事務(wù)管理器
(myTransactionManager)、共通的訪問(wèn)數(shù)據(jù)庫(kù)接口commonDAO(com.iplan.portal.framework.base.hibernate.CommonDAO)
以上兩個(gè)都是系統(tǒng)運(yùn)作的基礎(chǔ),其間有一些聯(lián)系,大家可以參照一下具體的配置文件即可
其它的三個(gè)配置文件都是按照功能模塊來(lái)劃分的,都是具體業(yè)務(wù)方面的信息,這里不在詳細(xì)描述,可以自行參考配置文件
3、struts和spring的結(jié)合處理(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"和相應(yīng)的struts配置文件中的path屬性要一一對(duì)應(yīng)起來(lái),這樣action類的生命周期將交由spring容器來(lái)管理了
4、模版技術(shù)(tiles-config文件夾下)
5、驗(yàn)證技術(shù)(validation-config文件夾下)
這兩項(xiàng)就不在多做闡述了,應(yīng)該應(yīng)用的比較多了
除了WEB-INF/config下的五大類配置文件外,對(duì)其他一些需要用到的配置信息作一個(gè)比較簡(jiǎn)單的介紹
hibernate.cfg.xml:
設(shè)置pojo信息,相關(guān)的SessionFactory配置已經(jīng)移植到了Spring的dataAccessContext-local.xml配置文件中去了
hibernate.properties
設(shè)置一些有關(guān)hibernate的屬性信息,比如:driver、url、username、password、dialect、Connection Pool等等
ApplicationResources.properties
i18n國(guó)際化資源信息
displaytag.properties
display標(biāo)簽的配置信息
default-db.script、default-db.properties默認(rèn)的hsqldb的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)
log4j.properties日志配置文件
最后,還有一個(gè)非常重要的配置信息:web.xml
有關(guān)于各種信息的配置,web.xml里面有比較詳細(xì)的說(shuō)明,這里就不在多闡述了
這里描述一下應(yīng)用服務(wù)器啟動(dòng)后,如何加載這些配置信息已供應(yīng)用系統(tǒng)運(yùn)作的
第一步,當(dāng)然是讀取web.xml中的配置信息,可以啟動(dòng)
Log4j信息
通過(guò)ContextLoaderListener、讀取contextConfigLocation信息(spring(app-config文件夾下)),加載springapp-config文件夾下的配置信息
HSQLDB數(shù)據(jù)庫(kù)
啟動(dòng)struts的ActionServlet,相應(yīng)的config被加載
第二步,從第一步可以看到struts(struts-config文件夾下)、spring(app-config文件夾下)都已經(jīng)被加載
那么struts和spring的結(jié)合處理(action-servlets-config文件夾下)、模版技術(shù)(tiles-config文件夾下)、驗(yàn)證技術(shù)(validation-config文件夾下)如何被加載呢?
struts和spring的結(jié)合處理(action-servlets-config文件夾下)通過(guò)struts(struts-config文件夾下)下的struts-config-default.xml加載 模版技術(shù)(tiles-config文件夾下)、驗(yàn)證技術(shù)(validation-config文件夾下)分別通過(guò)struts(struts-config文件夾下)下的各個(gè)對(duì)應(yīng)的功能模塊配置文件加載
通過(guò)以上兩步加載,把五個(gè)大的配置信息都加載到系統(tǒng)中去了
以上是關(guān)系系統(tǒng)配置文件的一些說(shuō)明,希望通過(guò)這些能對(duì)整個(gè)系統(tǒng)的架構(gòu)有一個(gè)比較清晰的了解
已經(jīng)轉(zhuǎn)移到 好·色之徒--我的博客、我的生活