王海燕,吳 潔
(1.商丘師范學院 計算機與信息技術學院,河南 商丘 476000;2.河南信息工程學校 河南 鄭州 450000)
隨著Internet的豐富和發展,促成了數字化信息內容的迅速成長。但同時很多網站卻不能迅速跟進大量信息衍生及業務模式變革的腳步,尤其是遇到網站擴充或整合的時候,需要花費很多時間和精力去更新信息,人們的工作變得異常復雜,而網站內容管理系統的出現有效的解決了這個問題。這里我們對內容管理系統的現狀和存在的問題進行了闡述,并給出了架構設計。
處在科技高速發展的時代,網絡技術給人們的生活和工作帶來了深刻的變革,信息化、網絡化、數字化正滲透到社會的各個角落,企業對于通過互聯網來收集、處理和傳遞數據的依賴性越來越強。面對越來越大的信息處理量,我們也面臨著許多問題,如建站困難、大量信息堆積及信息更新不及時,服務功能不健全、手工處理效率低下、發布的信息無時效價值;改版工作量大,系統的擴展能力差等。
對于上述問題,如何來有效管理各種數據信息和維護這些信息內容,全面提升管理水平,真正達到快捷、準確、實時的發布信息,解決用戶網站建設與信息發布中常見的問題,以適應各級企業不斷增長的需求,就成為一個耗費人力、物力、時間的工作,基于這樣的目的,一套專業的網站內容管理系統應運而生。
新一代的內容管理平臺的發展應著重以下幾個方面:
1)強健的架構、良好的集成擴展性,方便進行維護和管理
新一代的內容管理系統必須基于優良穩定的體系結構,具有更高的安全性,易于集成和功能的擴展,可以提供方便的管理維護功能或工具,并可以快速部署[1]。
2)系統管理和內容業務分離,更強的業務獨立性和靈活性
網站內容管理的復雜度和靈活性要大大高于一般的業務系統,因此網站內容管理必須能夠提供更強的業務獨立性和靈活性[2]。
3)表現和內容分離,用戶體驗和內容質量的和諧統一
內容表現和內容本身需要盡可能的獨立,用戶無需過多的關注內容表現形式的制作,由系統提供預設可選的模板來展現內容[3]。
該內容管理系統使用了標準的三層體系結構,在框架設計中需要考慮很多問題:怎樣建立用戶接口;在哪里處理業務邏輯;怎樣持久化數據;怎樣設計能松散耦合還能靈活改變,應用程序如何做各種級別的業務處理。為了使系統的各個應用層保持一致,讓每個層在一種松散耦合的方式彼此作用而不用考慮低層的技術細節,為此選擇一個主流技術架構Struts2+freemarker+Spring2+Hibernate3,將應用功能分成表現層、邏輯層和數據層,Struts2+freemarker主要是解決表現層的問題,Spring主要是解決應用邏輯層問題。Hibernate主要是解決數據庫持久的問題。系統完整的處理過程如圖1所示。

圖1 三層架構處理過程Fig.1 Three layer software architecture
這是一種先進的協同應用程序開發模型,各層是邏輯的,而不是實際的物理上的,這種三層架構具有很多優勢:
1)安全性
通過應用三層結構,使中間邏輯應用層和前臺界面、后臺數據庫分開。利用功能層有效地隔離開表示層和數據層,未授權的用戶難以繞過功能層而利用數據庫工具或黑客手段非法地訪問數據層,這就為嚴格的安全管理奠定了堅實的基礎,整個系統的管理層次也更加合理和可控制[4]。
2)便于升級、維護
三層結構技術是一個基于組件的開發模式,是根據業務涉及的數據和處理流程、不同的行業特性設計成屬性、方法并獨立封裝,使業務工作對象化。當用戶需求發生變化時,只要修改相應的對象就可以了。
3)獨立性
合理地劃分三層結構的功能,使之在邏輯上保持相對獨立性,從而使整個系統的邏輯結構更為清晰,能提高系統和軟件的可維護性和可擴展性[5]。
在該內容關系系統中,第一層是表示層,作為應用的用戶接口部分,它擔負著用戶與應用間的對話功能。中間邏輯層由功能對象和應用邏輯組成。它提供定義良好的接口,使表示層可以方便地存取數據,從而適應于服務中的各種請求,第三層是數據層,封裝了對數據庫的訪問功能。
文中內容管理系統的視圖層提供給用戶視覺上的界面,負責面向最終用戶的信息發布,與用戶進行交互。用戶輸入的信息通過該層傳輸給邏輯層,并負責邏輯層提取數據呈現給用戶。Struts2可以非常簡單地使用FreeMarker模板作為視圖技術,對于傳統的JSP頁面而言,FreeMarker是一個絕佳的替代方案。
展示數據的實現過程是:由java程序準備好要顯示的數據,由FreeMarker生成頁面[6],通過模板顯示準備的數據如圖2所示。

圖2 Freemarker流程圖Fig.2 Freemarker flow chart
為了在Struts2應用中使用FreeMarker模板技術,我們需要在Struts.xml文件中進行配置。雖然FreeMarker自己提供了一些FTL指令,可以對數據模型中的數據進行迭代輸出,也提供了一定的條件判斷能力。但Struts2提供的標簽遠不止于此,它還提供了一系列的表現標簽,例如form標簽等。因此,還是需要在FreeMarker模板中使用Strut2標簽.
在內容管理系統的持久層的上方是業務邏輯層,在該層中主要負責企業信息內容的業務管理,包括欄目、新聞信息等。
業務邏輯層在代碼中主要體現在Service層,Service層大多時候都是簡單的調用DAO里面的方法,但沒有它又不行,因為有些復雜的業務邏輯就需要在Service層完成,否則易造成業務代碼和底層的代碼混亂,對以后功能的修改帶來災難性的影響,而且Service層也是Spring實現事務控制的地方。
Service層設計的時候首先需要對上層使用到的對象定義一系列接口,所有與業務層有交互的代碼都應該通過這些接口實現。對于由Spring負責管理的對象,可以通過依賴注入加以實現。在Service層還不得不提到的一點就是 Spring處理的事務管理,Spring提供兩種事務處理的方法:聲明式事務和編程式事務。聲明式事務是借助于Spring AOP模塊來實現,是系統級的事務管理,在內容管理系統開發中也用到了該事務管理方法.另外在內容管理系統設計時還要額外注意事務邊界的劃分,例如在處理聲明式事務管理功能時,那就需要將事務控制在方法層面,這樣可以將多次的調用封裝在同一個事務之中.使用 Spring的聲明式事務管理,業務接口的方法就是事務的邊界。
數據庫持久層的設計目標是為整個項目提供一個高層、統一、安全和并發的層設計的好壞很大程度上決定了是否能完成該項目。此時可以考慮采用數據持久層框架,本項目采用了Hibernate,它提供了數據訪問方法,能夠使其它程序數據持久機制,程序員避免手工編寫程序訪問數據持久層,使其專注于業務邏輯的開發,并且能夠在不同項目中重用映射框架,大大簡化了數據增、刪、改、查等功能的開發過程,同時又不喪失多層結構的天然優勢,集成延續JAVAEE特有的可伸縮性和可擴展性[6]。
內容管理系統數據庫表主要包含:用戶信息部分、權限部分、模板部分。在設計數據庫表時要遵守規范式的設計要求,已達到數據庫表設計的合理化。同時為了保證數據庫的一致性和完整性,要為數據庫表設計相應的關鍵字、識別、缺省等信息。Struts+Spring+Hibernate,實現了系統層次的松散耦合,框架把業務邏輯和持久性邏輯分開能減輕了開發人員從頭構建持久層代碼的精力,從而集中精力來處理邏輯問題,分層的另一大好處是,對日后系統的升級和維護帶來很大的好處。在分層的基礎上進一步實現是下一步的目標。
[1]熊文,方亮,張淑芳.三層web體系結構的特點與比較[J].計算機應用與研究,2006:61-63.XIONG Wen,FANG Liang,ZHANG Shu-fang.The characteristics and comparation of the three-tier web architecture[J].Application Research of Computers,2006:61-63.
[2]李發英,朱海濱.基于Struts+Hibernate的Web應用的設計與實現[J].計算機技術與發展,2009(4):91-94.LI Fa-ying,ZHU Hai-bin.Design and implementation of Web applications based on Struts+Hibernate[J].Technology and Development of Computers,2009(4):91-94.
[3]李邵平,彭志平.一種Web應用框架及其實現[J].計算機技術與發展,2009(8):117-119.LI Shao-ping,PENG Zhi-ping.An implementation of the Web application framework[J].Technology and Development of Computers,2009(8):117-119
[4]潘春華,李悅,唐茂元.基于Spring框架的北京林業大學圖書館門戶系統設計與實現[J].現代情報,2008(4):169-172.PAN Chun-hua,LI Yue,TANG Mao-yuan.The library portal system design and implementation of the Beijing Forestry University based on the spring framework[J].Modern Information,2008(4):169-172.
[5]徐博藝,姜麗紅,董理.一種基于J2EE的軟件架構的研究與應用[J].計算機應用研究,2006,23(9):146-148 XU Bo-yi,JIANG Li-hong,DONG Li.Research and application of a kind of software architecture based on J2EE[J].Application Research of Computers,2006,23(9):146-148.
[6]JIANG Zi-jing.The analysis and design of the content management system based on J2EE[EB/OL].(2009)http://www.dco88.com/p-199579990680.html