何永太
(安徽水利水電職業技術學院,安徽 合肥 231600)
CMS全稱為內容管理系統,是一種將數據(網頁中的內容)與數據的表現形式(網頁的顯示效果與格式)進行分離,并提供對數據進行有效管理的應用系統.內容管理系統的應用使得基于信息發布類的網站建設的技術門檻變得更低、建設周期變短,網站的運行維護變得更加高效、安全、簡單、快捷,網站的前端頁面重構也變得更加容易.
目前,用于網站建設的CMS系統主要以基于ASP和PHP技術的居多,如PHPMyWind.這些系統有著其本身不可逾越的局限性,如語言的純解釋性執行、服務器端腳本與前端腳本混和在一起從而不利于后期的系統維護、安全性不夠等,從而使得應用它們開發的網站性能不夠高、安全性不強、網站可擴展性不足.JAVA技術有性能高、安全性高、跨平臺、面向對象、多線程等優秀特點,在企業應用開發中成為首選的技術平臺.本文論述了將MVC思想引入CMS系統的開發中,并使用基于JAVA技術的優秀開源框架Spring MVC進行開發的解決方案.
MVC模式最初是由挪威計算機專家Trygve M.H.Reenskau提出,該模式將應用系統分成三個部分:Model、Controller和View[1].其中,Model用于封裝應用狀態和業務邏輯,View用于可視化界面的顯示并捕獲用戶的操作動作,View會將捕獲到的用戶操作傳遞給Controller.Controller會根據接收到的用戶操作請求決定是否要調用Model完成相關業務邏輯的處理,并決定選擇相應的View來響應用戶的操作.MVC三個部分的關系如圖1所示[2,3].

圖1 Model-View-Controller三者之間的交互
Spring MVC是使用JAVA技術、基于MVC模式而開發的輕量級的企業Web應用開發框架,相比目前其他眾多的MVC框架(如Struts2)而言,Spring MVC更具擴展性和靈活性.Spring MVC框架在Web應用中的處理流程如圖2所示[4].

圖2 Spring MVC框架在Web應用中的處理流程
DispatcherServlet充當MVC模式中Controller,是整個框架的控制轉發中心,由Spring MVC框架自動完成,View與MVC中View對應.圖2中的Controller(自定義控制器)、Service、DAO三部分對應于MVC中的Model,用于處理復雜的業務邏輯功能.業務邏輯處理采用三層結構設計,Controller層對請求響應進行具體化,由DispatcherServlet進行調用;Service層提供更細單元的操作實現,由Controller層進行調用;DAO層一般用于實現對具體數據的讀寫訪問,如數據庫訪問、文件讀寫等,由Service進行調用.這種分層設計更易于代碼的模塊化處理與分離,有利于團隊開發過程中的分工與協作,有利于代碼的自動化測試.
通過以上分析,可知應用Spring MVC框架開發CMS系統,開發關注點集中在Controller、Service、DAO及View幾個部分的合理設計.
CMS系統應能夠實現數據內容與其顯示相分離,因此一個功能完備的CMS系統應由兩大部分構成:后臺數據管理和前臺頁面訪問處理.
后臺數據管理主要完成的功能有:
(1)站點管理.完成站點基本信息的管理、數據分類管理、導航管理、鏈接管理等;
(2)用戶管理.完成對后臺管理用戶的添加、刪除、修改操作,以及對用戶進行權限分配與回收的管理等;
(3)站點各類數據的管理.完成對各類數據的添加、刪除及修改操作,實現對文件的上傳與下載的管理等;
(4)站點前臺頁面管理與配置.所有前臺使用的頁面要通過后臺管理進行注冊登記,這樣前臺訪問的入口控制器才能識別它.每一個頁面要顯示(使用)的動態數據以配置頁面變量的方式進行設置.
為了實現前臺的數據與其顯示相分離的目的,前臺頁面訪問處理應要實現2個基本功能:(1)如何取得需要的數據;(2)如何決策由哪個頁面模板來顯示取得的數據.
后臺管理的操作界面是相對固定的,為提高用戶的操作體驗,使用Ajax方式提交命令及數據,實現流程如圖3所示.

圖3 后臺管理設計實現
圖3中,所有以Controller結尾的類為自定義控制器類,其內部定義了眾多的方法,以響應不同的頁面操作請求.MySqlDao、SqlServerDao、OracleDao是實現了 DAO接口的類,用于實現對不同類型的數據庫的統一訪問,這樣CMS系統可以在不同的數據庫系統之上進行移植,以滿足不同的系統環境需求.
如前面2所述,為使訪問前臺頁面所需的2個功能順利實現.設計一個統一入口的自定義控制器,所有前臺頁面的訪問必須經過該入口控制器,并附帶幾個參數:
w——要訪問的站點id.省略時,代表訪問主站點;
v——視圖(View)的名稱,即用于顯示內容的對應前臺頁面文件名(不帶擴展名);此參數省略時默認使用主頁面視圖;
i——要顯示數據的標識值,一般為數據在數據庫中的主鍵,一般不能省略;
p——如果顯示的是數據列表,則表示數據列表分頁的頁號,省略時代表顯示第1頁;否則可以省略此參數;
s——如果顯示的是數據列表,則表示數據列表分頁的頁大小,省略時由后臺參數設定;否則可以省略該參數;
a——作為附加的額外數據使用,一般情況下該參數被忽略.
頁面中要顯示的數據通過后臺管理進行配置,可以對一個頁面配置多個數據變量,利用JSP的EL和JSTL技術進行數據的提取填充.
入口控制器的處理主流程如圖4所示.

圖4 前臺頁面訪問入口控制器的處理流程
至此,前臺頁面訪問的視圖動態選擇和數據的提取問題均已解決.
CMS系統已經逐漸成為網站建設的主流趨勢,具有非常好的發展前景和應用市場.本文提出的基于Spring MVC框架開發CMS系統的解決方案,充分利用了JAVA平臺技術的高性能、高安全性、跨平臺性等特點,使得開發出來的CMS系統相對于使用其他技術的同類系統具有更出色的優勢,適用于訪問率高、網站集群的應用需求.應用本文提出的方案所開發的CMS系統,在安徽水利水電職業技術學院網站建設、運行維護過程中,應用效果良好.
〔1〕黃偉.基于MVC架構的Web應用系統設計[J].微型計算機與應用,2004(3):13-15.
〔2〕蔣金楠.ASP.NET MVC4框架揭秘[M].北京:電子工業出版社,2013.1.
〔3〕曾巧明,肖孟,湯偉.MVC模式在CMS中的應用及其PHP實現[C].第十三屆全國青年通信學術會議,2008.
〔4〕陳雄華,林開雄.Spring 3.x企業應用開發實戰[M].北京:電子工業出版社,2012.11.