王 丹
(遼寧省交通高等專科學校,遼寧 沈陽 110122)
目前還有很多高校進行串調課時,仍然是教師填寫申請單,然后需要分別到教研室、院系辦公室和教務處簽字,教務處再根據教室的使用情況進行調整,這樣不僅效率低下,而且浪費了很多人力、物力。隨著互聯網的普及,開發一套網上串調課系統,教師在辦公室或家里,就可以通過網上串調課系統進行申報,而教研室、系部和教務處等相關部門,也可以從網上進行審批,從而解決了上述的問題。
本系統采用當前比較流行的網絡開發語言Java、基于MVC模式的Struts框架以及為了系統擴展的多層架構設計模式。下面針對本系統所采用的技術以及本系統的設計和實現進行說明。
MVC(Model-View-Controller)模式是由模型、視圖和控制器組成的,被廣泛地應用于大型可擴展的Web軟件開發中,為交互式應用程序開發提供了結構化設計模型。基于“分而治之”的思想,使用戶視圖(View)、控制器(Controller)與模型(Model)分離開來,結構清晰,不僅能夠有效地存儲和展現數據對象中的功能模塊,同時又大大降低了模塊之間的耦合度。
在MVC模式中,傳統的輸入、處理和輸出被映射到3個方面,即表現、業務和控制。模型由應用程序數據和業務規則組成,它是應用程序的核心,控制數據訪問和數據更新。視圖負責模型內容的表現,它從模型接收數據并決定數據顯示形式。當模型發生變化時,它將通知視圖保持數據的一致性。控制器負責受影響的模型和視圖的動作和事件,它接收客戶端請求并將它們映射到模型的實現操作,并返回結果到視圖。在MVC處理中,每個客戶端輸入請求首先由控制器接收,控制器決定哪個模型處理它,然后,模型根據業務邏輯處理請求。最后,視圖顯示用戶結果。
Struts是在J2EE平臺上應用日益廣泛的Web應用程序框架。Struts框架實現了模型—視圖—控制器(MVC)設計模式,它將Model,View和Controller分別映射到Web應用系統中的組件,通過在Web頁面中使用Struts框架定義的標簽,實現頁面表示層與數據層的分離,從而使頁面更加簡潔、易于管理。
模型包含業務邏輯,并與永久性存儲進行交互,以存儲、重新檢索和操作數據。視圖負責將結果返回給用戶。在Struts中,視圖層是使用JSP實現的。控制器處理來自用戶的所有請求,并選擇合適的視圖返回。在Struts中,控制器的工作是由Action Servlet完成的。當Action Servlet收到請求時,將所有請求值捆綁到Java Bean類中,該類擴展了Struts Action Form類。決定要調用哪個Action類來處理請求。驗證用戶輸入的數據。Action類在模型組件的幫助下處理請求。該模型與數據庫交互并處理請求。在完成請求處理之后,Action類將一個Action Forward返回給控制器。
傳統的客戶/服務器(Client/Server,C/S)體系結構,在軟件伸縮性、可管理性、安全性、軟件重用性和資源形態上都難以滿足要求。架構3層式軟件開發體系結構,將數據處理邏輯或業務邏輯從兩層結構中提取出來,形成中間業務層,中間層可能運行在不同于客戶機的其他機器上,經過合理的任務劃分與物理部署后,可使得整個系統的工作負載更趨均衡,從而提高整個系統的運行效率。
由于Struts框架很好地實現了MVC的設計模式,本系統設計中,以Struts所框架作為基礎,連接前臺顯示層和后臺的業務層。在業務層和數據之間,本系統專門設計了數據訪問對象(Data Access Object,DAO)層,把業務層和數據庫具體操作分開,這樣不僅提高了開發效率,并且易于維護。
本系統共劃分了5層:HTML/JSP/Servlet為操作界面顯示層;Struts Action為邏輯控制層;業務對象為業務層;DAO數據訪問層;關系數據庫。
在技術結構設計的基礎上,對串調課系統的業務進行分析,得出了串調課系統結構,如圖1所示。

圖1 系統結構
串調課系統從用戶操作界面的角度分為5部分:登錄、基本信息、串調課管理、系統管理和消息管理,它們分別通過Struts Action與業務對象進行交互。由于登錄部分的業務對象放在了系統管理中,因此在系統結構圖中,業務對象少于操作界面層。
由于Structs Action設計非常固定,而數據庫設計符合第三范式即可,因此下面主要從操作界面、業務對象和數據訪問3方面的實現,進行詳細說明。
B/S結構的操作界面基本是Html/JSP/Servlet,其中JSP是最常用,并且是最多的。JSP的各種標簽,如按鈕、文本框、下拉框等,為了保持它們的界面風格統一,本系統采用自定義標簽,定義屬性文件,當然也可以采用Struts提供的一些標簽。
在系統中,除了對界面風格提供了屬性配置文件外,并為了最大限度地減少JSP頁面中的Java代碼,對JSP頁面中的操作進行了封裝。現在以基本信息中內部職員為例進行說明,建立一個內部職工信息頁面:personlist.jsp,該網頁包含3個通用網頁:common.jsp,list_tool_top.jsp和list_data.jsp。
common.jsp頁面中導入了常用類、Struts標簽、自定義標簽、頁面CSS樣式文件、JavaScript函數文件和共同變量等。list_tool_top.jsp包含了查詢、刪除、保存、修改、排序等通用操作的邏輯處理,界面操作按鈕、分頁和操作類型的標簽等。list_data.jsp文件主要用于數據顯示的功能。
personlist.jsp除了包含上述3個文件外,還需要定義本功能模塊Action的target。因此,personlist.jsp作為一個完整功能模塊的數據操作界面,需要編寫的代碼行數僅有10行左右。
業務對象(Business Object,BO)是對真實世界的實體軟件抽象,它包含數據和行為,它們對應著數據庫中的一條或多條記錄,盡管不同業務之間的差距非常大,但是它們都共享一些公共的屬性,例如版本號、描述、操作者、操作時間、表名、列數等。
在本系統中由于涉及多個業務對象:如系部、專業、內部職員、串調課等,因此定義了一個抽象父類Base Business Object,它包含了業務對象所用到的公共屬性,所有的業務對象都必須繼承此父類。如果涉及后續串調課系統的調整或內容增加,還可以對該類進行擴充。
由于在本系統中,由于所有的業務對象都需要訪問數據庫,因此在本系統中引用了DAO設計模式,DAO模式提供了訪問關系型數據庫系統所需的所有操作接口,DAO模式將底層數據訪問操作與高層業務邏輯分離開,對上層提供面向對象的數據訪問接口。
本系統設計了Data Access Object類,它封裝了所有的數據庫的操作,并且使用連接池,提高系統的性能。并且通過讀取配置文件,可以設置不同的數據庫驅動,連接不同的數據庫,例如SQL Server,Oracle,MySQL等,使系統具有了通用性,在不同的數據庫之間實現無縫轉換。
本串調課系統雖然是一個相對簡單的網絡應用系統,但它的最大特點是不僅采用了當前非常流行的網絡開發技術,并且應用了MVC和DAO等多種設計模式,把串調課系統的具體業務和網絡應用通用功能進行了區分,并對通用功能進行了封裝,形成了一個通用框架,不僅易于維護,還可實現代碼重用,可以對類似網絡應用系統開發作為參考和借鑒。