999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于J2EE的輕量級(jí)企業(yè)信息系統(tǒng)框架應(yīng)用

2008-01-01 00:00:00
商場(chǎng)現(xiàn)代化 2008年1期

[摘要] 基于Struts、Spring和Hibernate對(duì)企業(yè)信息系統(tǒng)進(jìn)行分層。在強(qiáng)調(diào)它們技術(shù)原理的基礎(chǔ)上并結(jié)合應(yīng)用實(shí)例,提出三種開(kāi)源框架的整合方式,應(yīng)用它們作為一種企業(yè)信息化解決方案。實(shí)現(xiàn)了系統(tǒng)各層次的松耦合,提高了擴(kuò)展性、復(fù)用性和可維護(hù)性,具有一定的現(xiàn)實(shí)意義。

[關(guān)鍵詞] 企業(yè)信息化 輕量級(jí)框架 Struts Spring Hibernate J2EE

目前軟件系統(tǒng)發(fā)展已經(jīng)相當(dāng)復(fù)雜。大型企業(yè)信息系統(tǒng)的設(shè)計(jì)者越來(lái)越注重通過(guò)一個(gè)合適的框架完成系統(tǒng)開(kāi)發(fā)。基于J2EE企業(yè)信息系統(tǒng)的平臺(tái)無(wú)關(guān)性、層次性、安全性與可擴(kuò)展性正成為企業(yè)信息化的主要解決方案。因此本文通過(guò)集成Struts、Spring和Hibernate來(lái)實(shí)現(xiàn)模塊間的解耦,以提高企業(yè)信息系統(tǒng)的擴(kuò)展性、復(fù)用性和可維護(hù)性。

一、J2EE框架技術(shù)

Struts起源于SmallTalk的MVC。即Model、View和Controller。由Controller解耦顯示邏輯與業(yè)務(wù)邏輯,支持實(shí)現(xiàn)松耦合結(jié)構(gòu)。面對(duì)WebWork、Spring MVC、JSF、Tapestry等,Struts設(shè)計(jì)成熟、信息資源豐富、開(kāi)發(fā)群體廣泛,是目前最常用的表現(xiàn)層MVC。

Spring是一種為解決企業(yè)應(yīng)用程序開(kāi)發(fā)復(fù)雜性的輕量級(jí)應(yīng)用程序框架和容器。集成了J2EE許多最佳與前驅(qū)性實(shí)踐。具有傳統(tǒng)EJB的關(guān)鍵服務(wù)而不依賴于任何組件替代重量級(jí)EJB框架。擴(kuò)展了所集成的組件并提供更高級(jí)功能。Spring完成了實(shí)際開(kāi)發(fā)所需的單態(tài)模式與工廠模式。核心機(jī)制是DI(Dependency Injection)與IOC(Inversion of Control)。通過(guò)DAO和ORM 實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)的抽象模塊,并支持Hibernate。

Hibernate是低侵入ORM(Object-Relationship Mapping)框架。聯(lián)接了面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言和關(guān)系型數(shù)據(jù)庫(kù)。實(shí)現(xiàn)了對(duì)JDBC的輕量級(jí)封裝。通過(guò)J2EE中的JDBC、JTA、JNDI實(shí)現(xiàn)Session、Transaction和數(shù)據(jù)庫(kù)連接管理。由HQL以面向?qū)ο蠓绞讲樵兂志没瘜?duì)象。ORM框架還包括OJB、TopLink等。OJB是Apache的子項(xiàng)目,開(kāi)發(fā)文檔不多,規(guī)范一直不很穩(wěn)定,并未得到廣泛支持。TopLink一旦作為商業(yè)產(chǎn)品使用則要收取費(fèi)用。

二、框架的整合與實(shí)踐

對(duì)于一個(gè)企業(yè)信息系統(tǒng)來(lái)說(shuō),考慮到雖然系統(tǒng)中各模塊實(shí)現(xiàn)不同,但原理大同小異。因此,本文以開(kāi)發(fā)的信息發(fā)布子系統(tǒng)為例集成Struts、Hibernate和Spring,并說(shuō)明系統(tǒng)各層實(shí)現(xiàn)。系統(tǒng)架構(gòu)處理流程如圖所示。表現(xiàn)層通過(guò)控制器與業(yè)務(wù)邏輯層交互,業(yè)務(wù)邏輯層同時(shí)處理業(yè)務(wù)規(guī)則與數(shù)據(jù)訪問(wèn),再與數(shù)據(jù)持久層交互。

圖 系統(tǒng)的架構(gòu)處理流程

1.Domain Object

根據(jù)系統(tǒng)需求從應(yīng)用中抽取實(shí)體。子系統(tǒng)模型實(shí)體類包括:(1)Publisher:發(fā)布者信息。(2)Information:包括標(biāo)題、內(nèi)容、時(shí)間、圖片路徑、新聞審核與推薦等。(3)Category:信息分類。(4)View:信息說(shuō)明或補(bǔ)充評(píng)論。用POJO(Plain Old Java Object)作為PO。以Information為例,其中包含Publisher、Category和View類對(duì)象。

<class name=\"informationpub.model.Information\" table=\"information\">

<id name=\" informationId \" column=\"informationId\" type=\"Integer\">//映射標(biāo)識(shí)

<generator class=\"increment\"/></id>

<property name=\"informationTitle\" column=\"informationTitle\" length=\"30\" type=\"string\" not-1=\"true\"></property>

......

<many-to-one name=\"category\"class=\"informationpub.model.Category\"column= \"categoryId\" not-1=\"true\"/>

......

2.數(shù)據(jù)持久層

數(shù)據(jù)持久層采用DAO(Data Access Object)設(shè)計(jì)模式。對(duì)底層數(shù)據(jù)庫(kù)提供CRUD操作,對(duì)上層業(yè)務(wù)邏輯提供DAO接口。DAO實(shí)現(xiàn)包括三個(gè)部分:(1)在DAO接口中聲明CRUD等方法。(2)實(shí)現(xiàn)DAO接口并擴(kuò)展支持類。(3)產(chǎn)生DAO實(shí)例,實(shí)現(xiàn)業(yè)務(wù)邏輯與持久層的解耦。然后獲得DAO 工廠實(shí)例,產(chǎn)生DAO組件。通過(guò)擴(kuò)展HibernateDaoSupport和對(duì)應(yīng)DAO接口完成Hibernate實(shí)現(xiàn)。傳入sessionFactory引用到由HibernateDaoSupport提供的方法中,返回HibernateTemplate實(shí)例完成數(shù)據(jù)庫(kù)操作。以Information為例的DAO接口實(shí)現(xiàn)類如下:

public class InformationDAOHibernate implements InformationDAO{

public void saveInformation (Information information) {

getHibernateTemplate().saveOrUpdate(information); //保存一條信息

……}}

Spring作為DAO工廠。

<beanid=\"sessionFactory\"class=\"org.springframework.orm.hibernat3.LocalSessionFactoryBean\">……//列出并加載PO映射文件

<beanid=\"informationDAO\"class=\"informationpub.dao.InformationDAOHibernate\">

// sessionFactory的依賴注入

<property name=\"sessionFactory\" ref=\"sessionFactory\"/></bean>

可見(jiàn)當(dāng)數(shù)據(jù)庫(kù)結(jié)構(gòu)改變時(shí),僅影響DAO而并不會(huì)涉及業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯只要專注其自身的實(shí)現(xiàn),而不需要關(guān)注底層數(shù)據(jù)庫(kù)訪問(wèn),實(shí)現(xiàn)了業(yè)務(wù)邏輯與特定數(shù)據(jù)庫(kù)訪問(wèn)的解耦。

3.業(yè)務(wù)邏輯層

業(yè)務(wù)邏輯層完全依賴DAO組件,只需調(diào)用DAO接口。用Facade封裝多個(gè)DAO組件。依賴由Facade提供的一個(gè)高層接口。業(yè)務(wù)邏輯對(duì)外提供InforPubFacade接口,表示層只要面向該接口編程,實(shí)現(xiàn)了業(yè)務(wù)層與表示層的解耦。由InforPubFacadeImp擴(kuò)展InforPubFacade接口實(shí)現(xiàn)。InforPubFacadeImp類中將各DAO作為成員屬性。

public class InforPubFacadeImp implements InforPubFacade{

private InformationDAO informationDAO;

……//各類的DAO作為成員屬性

public void setInformationDAO(InformationDAO informationDAO) {

this. informationDAO = informationDAO;}

public void saveInformation (Information information) {

InformationDAO.saveInformation (information);

}……

}

4.表示層

表示層包括ActionForm和ActionServlet。ActionForm在視圖和ActionServlet之間傳遞數(shù)據(jù)。由ActionForm 的validate()完成數(shù)據(jù)驗(yàn)證。ActionServlet再根據(jù)接響應(yīng)完成到Action的轉(zhuǎn)發(fā)。再由Action的execute()獲取信息完成業(yè)務(wù)邏輯驗(yàn)證并決定調(diào)用的業(yè)務(wù)邏輯。在Struts中完成Spring容器的加載。不再將ActionServlet攔截的請(qǐng)求轉(zhuǎn)發(fā)到struts-config.xml中的Action,而是轉(zhuǎn)發(fā)到由Spring容器管理的Action。并由Spring的IOC管理Action。通過(guò)DelegatingRequestProcessor擴(kuò)展Struts的子請(qǐng)求處理器RequestProcessor,將請(qǐng)求轉(zhuǎn)發(fā)到action-servlet.xml。

<controller processorClass=\"org.springframework.web.struts.DelegatingRequestProcessor\"/>

<plug-in className=\"org.springframework.web.struts.ContextLoaderPlugIn\">

<set-property property=\"contextConfigLocation\"value=\"/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml\"/></plug-in><beans>

<bean name=\"/viewInformation\"class=\"informationpub.web.ViewInformationAction\" >//對(duì)應(yīng)struts-config.xml中viewInformation 的Action

<property name=\"viewInformation\">// 為Acion依賴注入

<ref bean=\" InforPubFacade \"/></property> </bean>

……//其他Action及相應(yīng)依賴注入

</beans>

三、結(jié)束語(yǔ)

本文集成Struts、Hibernate和Spring。系統(tǒng)層次清晰,由Spring貫穿整個(gè)系統(tǒng),無(wú)縫整合表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層。系統(tǒng)靈活性得到增強(qiáng)。業(yè)務(wù)邏輯只需實(shí)現(xiàn)一次,組件之間以接口方式耦合,實(shí)現(xiàn)了企業(yè)信息系統(tǒng)最大限度的解耦。開(kāi)發(fā)的系統(tǒng)具有良好的伸縮性與可擴(kuò)展性,從而提高企業(yè)運(yùn)作效率與降低開(kāi)發(fā)成本,具有一定的現(xiàn)實(shí)意義。

參考文獻(xiàn):

[1] James Goodwill. Jakarta struts[M]. O’REILLY Publishing, 2002.

[2] Ted Husted. Struts in Action: Building Web Applications with leading java framework[M]. Manning Publication Company, 2002.

[3] Matt Raible. Spring Live [M]. SourceBeat, 2004.

[4] Rod Johnson. Expert One on One J2EE Development without EJB[M]. Wiley Publishing,2004.

[5] Christian Bauer, Gavin King. Hibernate in Action[M]. Manning Inc,2004

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。

主站蜘蛛池模板: 亚洲日韩高清在线亚洲专区| 免费看a毛片| 成人综合久久综合| 2018日日摸夜夜添狠狠躁| 日韩一区精品视频一区二区| 国产电话自拍伊人| 国产成人免费| 国产精品13页| 老司机午夜精品网站在线观看 | 最新日本中文字幕| 亚洲精品无码AⅤ片青青在线观看| 国产免费精彩视频| 青草娱乐极品免费视频| 六月婷婷综合| 欧美啪啪一区| 美美女高清毛片视频免费观看| 91探花在线观看国产最新| 国产精品私拍99pans大尺度| 久久精品91麻豆| 亚洲第一成年人网站| 这里只有精品在线| 成人精品视频一区二区在线 | 国产精品太粉嫩高中在线观看| 91毛片网| 国产人人乐人人爱| 天天摸夜夜操| 中文字幕在线永久在线视频2020| 无码一区二区波多野结衣播放搜索| 中文字幕啪啪| 国产草草影院18成年视频| 97国产在线视频| 欧美一区国产| 亚洲国产成熟视频在线多多| 99re这里只有国产中文精品国产精品 | 国产在线观看精品| 国产区成人精品视频| 亚洲色图欧美在线| 亚洲高清国产拍精品26u| 9cao视频精品| 伊人激情综合网| 国产青青草视频| 色综合久久88色综合天天提莫| 亚洲男人在线天堂| 91精品国产综合久久香蕉922| h网址在线观看| 精品无码国产自产野外拍在线| 国产精品太粉嫩高中在线观看 | 国产精品极品美女自在线网站| 999国产精品永久免费视频精品久久 | 亚洲无码免费黄色网址| 国产精品第一区在线观看| 国产H片无码不卡在线视频| 国产精品福利导航| 日韩欧美中文在线| 日本精品一在线观看视频| 亚洲成aⅴ人在线观看| 18禁黄无遮挡网站| 成人第一页| 99精品在线看| 三级国产在线观看| 午夜精品久久久久久久无码软件| 国产白丝av| 男人天堂亚洲天堂| 国产精女同一区二区三区久| 亚洲天堂视频网| 国产成人亚洲综合a∨婷婷| 久久中文字幕2021精品| 国产簧片免费在线播放| 在线观看免费国产| 久久午夜夜伦鲁鲁片无码免费| 色135综合网| 国产精品美女自慰喷水| 亚洲精品色AV无码看| 亚洲电影天堂在线国语对白| 色婷婷在线影院| 欧美亚洲日韩中文| 自偷自拍三级全三级视频| 欧美va亚洲va香蕉在线| 成人精品在线观看| 亚洲综合精品第一页| 中文字幕资源站| 真实国产乱子伦视频|