国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺析SSH架構(gòu)

2011-08-24 07:23:58甄少鵬
時(shí)代農(nóng)機(jī) 2011年5期
關(guān)鍵詞:表示層偶合代碼

甄少鵬

(河北省石家莊市高新技術(shù)產(chǎn)業(yè)開(kāi)發(fā)區(qū)國(guó)稅局,河北 石家莊 050000)

1 引言

目前,國(guó)內(nèi)外信息化建設(shè)已經(jīng)進(jìn)入以Web應(yīng)用為基礎(chǔ)核心的階段。Java語(yǔ)言應(yīng)該算得上是開(kāi)發(fā)Web應(yīng)用的最佳語(yǔ)言。然而,就算用Java建造一個(gè)不是很煩瑣的Web應(yīng)用系統(tǒng),也不是件輕松的事情。有很多東西需要仔細(xì)考慮,比如要考慮怎樣建立用戶接口?在那里處理業(yè)務(wù)邏輯?怎樣持久化?而這3層構(gòu)架中,每一層都有各自要考慮的內(nèi)容,比如各個(gè)層該使用什么技術(shù)?怎樣的設(shè)計(jì)既能松散偶合還能靈活多變?怎樣替換某個(gè)層而不影響整體架構(gòu)?應(yīng)用程序如何做各個(gè)方面的處理(例如:事物處理)?幸運(yùn)的是,構(gòu)架一個(gè)Web應(yīng)用需要解決的一些問(wèn)題已經(jīng)由曾遇到過(guò)這類問(wèn)題的開(kāi)發(fā)者建立起處理這類問(wèn)題的框架。本文將討論怎樣結(jié)合3種著名的框架Struts、Spring和Hibernate來(lái)使你的程序做到松散偶合。

2 開(kāi)源框架Struts、Spring、Hibernate

(1)Struts實(shí)現(xiàn) MVC 的機(jī)制。 Struts是基于模型(Model)、視圖(View)和控制器(Controller)的MVC設(shè)計(jì)模式的應(yīng)用架構(gòu)。Struts在Web應(yīng)用開(kāi)發(fā)中的使用,極大地縮短了開(kāi)發(fā)時(shí)間,在很大程度上擺脫了傳統(tǒng)開(kāi)發(fā)模式的束縛。圖1顯示了Struts實(shí)現(xiàn)的MVC框架。

圖1 Struts實(shí)現(xiàn)的MVC框架

(2)Spring基本概念及其特點(diǎn)。Spring是一個(gè)AOP框架和IoC容器。運(yùn)用AOP可以創(chuàng)建 “橫切關(guān)注點(diǎn)”(Crosscutting concerns),在應(yīng)用時(shí)將它們插入代碼中,使得代碼有良好的可重用性。IoC容器允許在需要生成對(duì)象的地方創(chuàng)建一個(gè)應(yīng)用上下文,然后將這些對(duì)象傳遞給它們的合作對(duì)象。只需要在配置文件中聲明對(duì)象問(wèn)的關(guān)系,由IoC容器管理這些對(duì)象,在需要時(shí)由Spring提供。使用Spring,開(kāi)發(fā)者可以有效的組織中間層對(duì)象,消除項(xiàng)目中單例類的大量使用以及對(duì)大量定制文件格式使用的需要。無(wú)論是使用JDBC還是使用ORM,Spring提供了一個(gè)數(shù)據(jù)存取的一致性框架。

(3)Hibernate持久層框架。Hibernate是一個(gè)面向Java環(huán)境的輕量級(jí)O/R Mapping(對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射)工具,其作用是對(duì)Java類與數(shù)據(jù)庫(kù)中的表進(jìn)行映射,完成數(shù)據(jù)的持久化、同時(shí)也提供數(shù)據(jù)的查詢、一致性檢查、事務(wù)管理等機(jī)制。與直接調(diào)用JDBC操作數(shù)據(jù)庫(kù)相比,Hibernat可以大幅減少開(kāi)發(fā)時(shí)人工使用SQL和JDBC處理數(shù)據(jù)的時(shí)間。程序員能夠完全用面向?qū)ο蟮乃季S去設(shè)計(jì)系統(tǒng),將全部精力集中在編程中,而不用關(guān)心數(shù)據(jù)庫(kù)的連接、事務(wù)、并發(fā)性等問(wèn)題。另外,由于在編程中不會(huì)有特定數(shù)據(jù)庫(kù)相關(guān)的代碼,所以我們可以很容易地移植數(shù)據(jù)庫(kù)而不用修改JAVA代碼 (只需修改database schema及O/R映射文件),大大提高了系統(tǒng)的靈活性。

3 Struts+Spring+Hibernate輕量級(jí)架構(gòu)

如何建立你的架鉤,并且怎樣讓你的各個(gè)應(yīng)用層保持一致?如何整合框架,以便讓每層以一個(gè)松散偶合的方式彼此作用而不管底層的技術(shù)細(xì)節(jié)?這里討論一個(gè)使用3種開(kāi)源框架的策略:表示層用Struts,業(yè)務(wù)層用Spring,而持久化層則用Hibernate,

(1)表示層。一般來(lái)講,一個(gè)典型的Web應(yīng)用的前端應(yīng)該是表示層,這里可以使用Struts框架。Struts的主要功能:管理用戶的請(qǐng)求,做出相應(yīng)的響應(yīng)、提供一個(gè)流程控制器,委派調(diào)用業(yè)務(wù)邏輯和其他上層處理、處理異常、用戶界面的驗(yàn)證。

(2)持久層。Hibernate的主要功能:查詢對(duì)象的相關(guān)信息、存儲(chǔ)、更新、刪除數(shù)據(jù)庫(kù)記錄、支持大部分主流數(shù)據(jù)庫(kù),并且支持父表/子表(Parent/child)關(guān)系、事物處理、繼承和多態(tài)。

(3)業(yè)務(wù)層。業(yè)務(wù)層的主要功能:處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)校驗(yàn)、管理事務(wù)、提供與其他層相互作用的接口、管理業(yè)務(wù)層級(jí)別的對(duì)象的依賴、在表示層和持久層之間增加了一個(gè)靈活的機(jī)制,使得他們不直接聯(lián)系起來(lái)、通過(guò)揭示從表示層到業(yè)務(wù)層之間的上下文來(lái)得到業(yè)務(wù)邏輯、管理程序的執(zhí)行(從業(yè)務(wù)層到持久層)。

4 結(jié)語(yǔ)

SSH架構(gòu)是目前國(guó)內(nèi)外軟件企業(yè)的最主流的應(yīng)用技術(shù),也是J2EE未來(lái)的發(fā)展趨勢(shì)。Struts作為前臺(tái)控制框架簡(jiǎn)化了程序的開(kāi)發(fā),使界面開(kāi)發(fā)人員和Java程序員達(dá)到了有效的分離,使項(xiàng)目的可擴(kuò)展性大大增強(qiáng),提升了開(kāi)發(fā)效率,降低了開(kāi)發(fā)成本。Spring通過(guò)控制反轉(zhuǎn),層層回調(diào),極大地減少了業(yè)務(wù)邏輯代碼,Hibernate能極大地減少數(shù)據(jù)庫(kù)相關(guān)操作代碼,能實(shí)現(xiàn)一個(gè)簡(jiǎn)單高效的持久化。通過(guò)三者的有機(jī)結(jié)合使得整個(gè)應(yīng)用簡(jiǎn)單,松偶合,且容易測(cè)試。

[1]梁立新.項(xiàng)目實(shí)踐精解:基于Struts-Spring-Hibernate的Java應(yīng)用開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2006.

[2]孫衛(wèi)琴.精通Hibernate:Java對(duì)象持久化技術(shù)詳解[M].北京:電子工業(yè)出版社,2005.

[3]孫衛(wèi)琴.精通Struts:基于MVC的Java Web設(shè)計(jì)與開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2004.

[4]羅時(shí)飛.精通Spring[M].北京:電子工業(yè)出版社,2005.

猜你喜歡
表示層偶合代碼
基于乙醇偶合制備C4烯烴的研究
科學(xué)家(2022年4期)2022-05-10 03:47:14
基于Spring的企業(yè)級(jí)Web項(xiàng)目架構(gòu)設(shè)計(jì)研究
軟件(2019年6期)2019-10-08 06:27:21
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
菏澤市1例接種Ⅰ+Ⅲ犁脊灰減毒疫苗偶合猝死病例調(diào)查、診斷分析
多金屬偶合腐蝕模型
預(yù)防接種過(guò)程中的偶合癥發(fā)生概率有多大
ASP.NET三層構(gòu)架解析
双桥区| 确山县| 巫山县| 云阳县| 五河县| 共和县| 来宾市| 偏关县| 德保县| 香格里拉县| 清流县| 平武县| 张家口市| 宣城市| 莱芜市| 云浮市| 巧家县| 保靖县| 尉氏县| 洞头县| 澜沧| 开阳县| 芦溪县| 南和县| 虞城县| 丹东市| 宽甸| 筠连县| 长丰县| 出国| 渭南市| 闽清县| 峨眉山市| 杭锦旗| 云阳县| 玉田县| 柳林县| 新巴尔虎右旗| 潮州市| 岳阳县| 遂平县|