何永太
(安徽水利水電職業(yè)技術學院,安徽 合肥 231600)
CMS全稱為內容管理系統(tǒng),是一種將數(shù)據(網頁中的內容)與數(shù)據的表現(xiàn)形式(網頁的顯示效果與格式)進行分離,并提供對數(shù)據進行有效管理的應用系統(tǒng).內容管理系統(tǒng)的應用使得基于信息發(fā)布類的網站建設的技術門檻變得更低、建設周期變短,網站的運行維護變得更加高效、安全、簡單、快捷,網站的前端頁面重構也變得更加容易.
目前,用于網站建設的CMS系統(tǒng)主要以基于ASP和PHP技術的居多,如PHPMyWind.這些系統(tǒng)有著其本身不可逾越的局限性,如語言的純解釋性執(zhí)行、服務器端腳本與前端腳本混和在一起從而不利于后期的系統(tǒng)維護、安全性不夠等,從而使得應用它們開發(fā)的網站性能不夠高、安全性不強、網站可擴展性不足.JAVA技術有性能高、安全性高、跨平臺、面向對象、多線程等優(yōu)秀特點,在企業(yè)應用開發(fā)中成為首選的技術平臺.本文論述了將MVC思想引入CMS系統(tǒng)的開發(fā)中,并使用基于JAVA技術的優(yōu)秀開源框架Spring MVC進行開發(fā)的解決方案.
MVC模式最初是由挪威計算機專家Trygve M.H.Reenskau提出,該模式將應用系統(tǒng)分成三個部分:Model、Controller和View[1].其中,Model用于封裝應用狀態(tài)和業(yè)務邏輯,View用于可視化界面的顯示并捕獲用戶的操作動作,View會將捕獲到的用戶操作傳遞給Controller.Controller會根據接收到的用戶操作請求決定是否要調用Model完成相關業(yè)務邏輯的處理,并決定選擇相應的View來響應用戶的操作.MVC三個部分的關系如圖1所示[2,3].
圖1 Model-View-Controller三者之間的交互
Spring MVC是使用JAVA技術、基于MVC模式而開發(fā)的輕量級的企業(yè)Web應用開發(fā)框架,相比目前其他眾多的MVC框架(如Struts2)而言,Spring MVC更具擴展性和靈活性.Spring MVC框架在Web應用中的處理流程如圖2所示[4].
圖2 Spring MVC框架在Web應用中的處理流程
DispatcherServlet充當MVC模式中Controller,是整個框架的控制轉發(fā)中心,由Spring MVC框架自動完成,View與MVC中View對應.圖2中的Controller(自定義控制器)、Service、DAO三部分對應于MVC中的Model,用于處理復雜的業(yè)務邏輯功能.業(yè)務邏輯處理采用三層結構設計,Controller層對請求響應進行具體化,由DispatcherServlet進行調用;Service層提供更細單元的操作實現(xiàn),由Controller層進行調用;DAO層一般用于實現(xiàn)對具體數(shù)據的讀寫訪問,如數(shù)據庫訪問、文件讀寫等,由Service進行調用.這種分層設計更易于代碼的模塊化處理與分離,有利于團隊開發(fā)過程中的分工與協(xié)作,有利于代碼的自動化測試.
通過以上分析,可知應用Spring MVC框架開發(fā)CMS系統(tǒng),開發(fā)關注點集中在Controller、Service、DAO及View幾個部分的合理設計.
CMS系統(tǒng)應能夠實現(xiàn)數(shù)據內容與其顯示相分離,因此一個功能完備的CMS系統(tǒng)應由兩大部分構成:后臺數(shù)據管理和前臺頁面訪問處理.
后臺數(shù)據管理主要完成的功能有:
(1)站點管理.完成站點基本信息的管理、數(shù)據分類管理、導航管理、鏈接管理等;
(2)用戶管理.完成對后臺管理用戶的添加、刪除、修改操作,以及對用戶進行權限分配與回收的管理等;
(3)站點各類數(shù)據的管理.完成對各類數(shù)據的添加、刪除及修改操作,實現(xiàn)對文件的上傳與下載的管理等;
(4)站點前臺頁面管理與配置.所有前臺使用的頁面要通過后臺管理進行注冊登記,這樣前臺訪問的入口控制器才能識別它.每一個頁面要顯示(使用)的動態(tài)數(shù)據以配置頁面變量的方式進行設置.
為了實現(xiàn)前臺的數(shù)據與其顯示相分離的目的,前臺頁面訪問處理應要實現(xiàn)2個基本功能:(1)如何取得需要的數(shù)據;(2)如何決策由哪個頁面模板來顯示取得的數(shù)據.
后臺管理的操作界面是相對固定的,為提高用戶的操作體驗,使用Ajax方式提交命令及數(shù)據,實現(xiàn)流程如圖3所示.
圖3 后臺管理設計實現(xiàn)
圖3中,所有以Controller結尾的類為自定義控制器類,其內部定義了眾多的方法,以響應不同的頁面操作請求.MySqlDao、SqlServerDao、OracleDao是實現(xiàn)了 DAO接口的類,用于實現(xiàn)對不同類型的數(shù)據庫的統(tǒng)一訪問,這樣CMS系統(tǒng)可以在不同的數(shù)據庫系統(tǒng)之上進行移植,以滿足不同的系統(tǒng)環(huán)境需求.
如前面2所述,為使訪問前臺頁面所需的2個功能順利實現(xiàn).設計一個統(tǒng)一入口的自定義控制器,所有前臺頁面的訪問必須經過該入口控制器,并附帶幾個參數(shù):
w——要訪問的站點id.省略時,代表訪問主站點;
v——視圖(View)的名稱,即用于顯示內容的對應前臺頁面文件名(不帶擴展名);此參數(shù)省略時默認使用主頁面視圖;
i——要顯示數(shù)據的標識值,一般為數(shù)據在數(shù)據庫中的主鍵,一般不能省略;
p——如果顯示的是數(shù)據列表,則表示數(shù)據列表分頁的頁號,省略時代表顯示第1頁;否則可以省略此參數(shù);
s——如果顯示的是數(shù)據列表,則表示數(shù)據列表分頁的頁大小,省略時由后臺參數(shù)設定;否則可以省略該參數(shù);
a——作為附加的額外數(shù)據使用,一般情況下該參數(shù)被忽略.
頁面中要顯示的數(shù)據通過后臺管理進行配置,可以對一個頁面配置多個數(shù)據變量,利用JSP的EL和JSTL技術進行數(shù)據的提取填充.
入口控制器的處理主流程如圖4所示.
圖4 前臺頁面訪問入口控制器的處理流程
至此,前臺頁面訪問的視圖動態(tài)選擇和數(shù)據的提取問題均已解決.
CMS系統(tǒng)已經逐漸成為網站建設的主流趨勢,具有非常好的發(fā)展前景和應用市場.本文提出的基于Spring MVC框架開發(fā)CMS系統(tǒng)的解決方案,充分利用了JAVA平臺技術的高性能、高安全性、跨平臺性等特點,使得開發(fā)出來的CMS系統(tǒng)相對于使用其他技術的同類系統(tǒng)具有更出色的優(yōu)勢,適用于訪問率高、網站集群的應用需求.應用本文提出的方案所開發(fā)的CMS系統(tǒng),在安徽水利水電職業(yè)技術學院網站建設、運行維護過程中,應用效果良好.
〔1〕黃偉.基于MVC架構的Web應用系統(tǒng)設計[J].微型計算機與應用,2004(3):13-15.
〔2〕蔣金楠.ASP.NET MVC4框架揭秘[M].北京:電子工業(yè)出版社,2013.1.
〔3〕曾巧明,肖孟,湯偉.MVC模式在CMS中的應用及其PHP實現(xiàn)[C].第十三屆全國青年通信學術會議,2008.
〔4〕陳雄華,林開雄.Spring 3.x企業(yè)應用開發(fā)實戰(zhàn)[M].北京:電子工業(yè)出版社,2012.11.