時曉青
北方工業大學軟件工程實驗室 北京 100144
內容管理系統的基本思想是分離內容的管理和設計。頁面設計存儲在模板里,而內容存儲在數據庫或獨立的文件中。當一個用戶請求頁面時,各部分聯合生成一個標準的HTML 頁面。理解了內容和表現之間的差別,也就理解了內容管理的價值。回顧過去,從靜態網站到動態網站:早期的網站由純粹的HTML頁面組成,每一個頁面,都是由設計師將內容與設計進行整合,然后合成一個頁面。后來動態網站技術的出現,人們將內容本身保存在關系數據庫里,然后當用戶瀏覽時再動態地從數據庫中取出內容,使用程序生成HTML傳達給用戶。純粹的靜態技術過分強調內容的表現形式,從而使得效率低下,而動態網頁技術則因為包含比較高的技術含量,以及受限于技術,從而忽略了內容的表現。內容管理系統中通過模板技術來解決這個矛盾。內容的存儲使用關系數據庫,而使用模板來合成最終的頁面。模板讓設計師的才能發揮到極致,而又不影響效率。
本系統屬于框架性的內容管理系統,可以作為二次開發,此系統作為一個發布平臺,包括內容模塊(新聞頻道、論壇頻道、分享頻道、相冊頻道、個人中心頻道),資源模塊(圖片管理、css管理、js管理),工具模塊(在線幫助、安裝軟件),功能模塊(新聞發布、欄目管理、上傳下載、用戶管理、角色管理)。
本系統采用ssh框架,結合freemarke模板引擎技術。基于B/S結構的WEB層包括視圖表現層、業務邏輯層、持久化層和數據庫層,采用Struts框架來實現表示層,Spring實現業務層,Hibernate實現持久層,這三種技術相結合實現WEB的四層結構,構成一個開放框架。基于這種框架結構有利于內容管理系統的開發和管理,有利于系統業務的重用和改動,而Hibernate高速緩存技術的使用,使數據的存儲和讀寫速度得到大大提高,還有使用相關的組件,大大加快開發進程。
Struts為Java Web應用提供了現成的通用框架。如果沒有Struts.開發人員將不得不花大量時間和精力來設計、開發自己的框架。如果在Web應用中恰到好處的使用它,開發人員可以節省很多時間,把精力集中在如何解決實際業務上。
Spring也是一個完善獨立的框架,但是它的出現帶來了諸如事務管理之類的核心中間層概念的標準化,同時雖然Spring是一個單層框架,但是它提供了一個以統一的、高效的方式構造整個應用,并且可以將單層框架以最佳的組合揉合在一起建立一個連貫的體系。
Hibernate實現持久層,基于MVC的Web應用的數據層和與業務邏輯層之間有持久層,這也是應用中最容易出現錯誤的地方。開發者通常低估持久層框架在自己的Web應用中的作用,所以往往不被重視。一個效率好的持久層需要花費大量的開發時間,而且很容易產生缺乏功能和難以管理的現象。目前有許多開源的關系映射(ORM)框架,其中Hibernate更是因為它出眾的性能被java社區廣泛使用。Hibernate是Java應用和關系數據庫之間的橋梁,它負責Java對象和關系數據庫之間的映射。Hibernate內部封裝了通過JDBC訪問數據庫的操作,向上層應用提供了面向對象的數據訪問API。
在這種架構下,使得程序有很強的擴展性,在現有基礎上增加新的功能的難易程度降低到最低。整個系統的架構模型圖如圖1所示。

圖1 系統架構圖
本系統充分利用架構優勢,從頁面層跳轉到action層,通過spring注入,又跳轉到Service層,進行業務邏輯的處理,將業務處理的方法提取出來作為一個接口層提供給上層來使用。最后到Dao層進行增加刪除修改查看的編寫,并將各種服務提取出來作為一個接口層提供給上層。采用這種設計方法的目的,是為了盡可能的提高可維護性和強擴展性。同時將數據層進行持久化處理,方便數據庫的變化。
此內容管理系統作為一個信息發布平臺,前端包括資訊頻道,論壇頻道,分享頻道,相冊頻道,個人中心,應用頻道。前端框圖如圖2所示。

圖2 系統框圖
在資訊頻道采用luence作為全文檢索的搜索引擎,基于二分詞的方法建立索引,通過boost因子改變評分機制,同時改進高亮器算法,原來Highlighter 要在查詢出的結果數據再一次分詞,然后檢索關鍵字,再給關鍵字前后附上指定的前綴后綴 ,現在重構Highlighter ,接受document參數,設置高亮顯示。同時系統添加拼音詞庫,提供拼音自動提示功能方便用戶查找信息。
在論壇頻道,分享頻道,相冊頻道,個人中心都采用模板管理機制,內容管理系統的一個很大的優點是,使用模板機制,我們只需要在文檔中使用模板代碼,然后就可以集中精力在設計內容上了,要改變網站的外觀,我們只需要修改模板,而不用修改一個一個單獨的頁面,從而減輕了我們的工作量,加速了開發過程。
內容管理系統的后臺支撐了前端的顯示,后臺包括用戶管理,角色管理,上傳下載,欄目管理,發布管理,資源管理,模板管理。同時各個模塊以組件的形式進行封裝,為其他外部系統提供良好的接口,具有很強的擴展性和靈活性。其用例圖如圖3所示。

圖3 系統用例圖
系統管理員可以管理用戶,管理角色,管理數據字典,從而保證用戶的權限及功能。
普通用戶登錄系統后,可以修改其賬戶密碼以及一些基本信息。點擊資源管理,進入資源管理界面,可以查看資源管理的信息,包括圖片管理,css管理,js管理,插件管理。同時用戶還可以上傳資料,管理模板,從而對系統資源進行有效的管理。
用戶進入發布管理模塊以后,點擊我要發布,可以選擇發布信息歸屬的欄目,采用的模板,使用ckeditor富文本編輯器編寫發布的內容信息,可以自由選擇發布的路徑。充分體現了系統的靈活性。
作為一個二次開發平臺的內容管理系統,當外部系統調用組件時,系統快速定位到相關模塊的頁面,根據用戶輸入的參數,為其提供服務。從而大大的提高了用戶的開發速度,節約了資源。系統提供的接口畫面如圖4所示。

圖 4 組件接口圖
與其他的內容管理系統相比較,此系統的開發有很多自己的特點。該系統選用的是目前比較流行的開源框架,成熟度較高,系統各層問耦合度低,很好的處理了業務邏輯和持久性邏輯和Ul組件很好的耦合,內容管理系統選用模板化輸出頁面,分離了代碼和應用的表現部分,極大地方便了程序員和內容制作者的工作。高速緩存的使用又使性能得到很大提高。系統有如下的特點:
(1) 分層設計,耦合度低
該系統最大的特點在于采用分層結構并配合時下流行的組合框架Struts、Spring和Hibernate來進行開發。良好的框架自然地形成代碼分離的原則,更為重要的是,框架把業務邏輯和持久性邏輯分開能減輕了開發人員從頭構建持久層代碼的精力,從而集中精力來處理邏輯問題。分層的另一大好處是,模塊的刪除和增加都比較方便,對以后系統的升級和維護帶來很大的好處。
(2) 頁面模板化輸出
模板化輸出最大的好處在于,它分離了代碼(或程序邏輯)和表現(輸出)。由于這種分離,可以修改程序邏輯而不必擔心輸出的效果如何。模板把程序員從混合了大量文本信息的雜亂代碼中解放出來;使得制作文本內容的人無需面對程序邏輯,就可以輕松地編寫和修改內容。模板的另一個優點是它保護了系統,避免了有意或無意帶來危險的代碼。
(3) 高速緩存的使用優化性能
利用Hibernate的緩存技術,把數據庫數據的拷貝存放在緩存中,可以減少直接訪問數據庫的頻率,從而提高應用的性能。
(4) luence高亮算法
利用重構Highlighter ,接受document參數,設置高亮顯示。
(5) 拼音自動提示功能
提供拼音詞庫,提供自動提示功能。
(6) 各個應用組件化,提供接口,未其他系統服務。
[1] 趙文.什么是內容管理Enl.光明日報.2002.
[2] 張嬋,羅佳.企業內容管理綜述[J].現代計算機.2005.
[3] 干鈞.內容管理系統分析.蕪湖職業技術學院學報.2006.
[4] 李剛.Struts2權威指南.電子工業出版社.2007.
[5] 夏昕,曹曉剛,唐勇.深入淺出Hibernate.電子工業出版社.2005.
[6] 石雪松.內容管理的真正內涵.北京:中國計算機用戶.2003.
[7] 韓嘯,曹輝.內容管理的關鍵技術[J].中國傳媒科技.2004.
[8] 羅時飛.精通SPRINQ北京:電子工業出版社.
[9] Bruce Eckel.Thinking in Java(3th)[M].Person.2002.
[10] Rob Harrop and Jan Machacek.Pro Spnng[M].Apress.2005.