最大的網站源碼資源下載站,
  摘要  struts提供了一個非常好的mvc框架,在web應用開發中把界面和業務邏輯分離,提高了代碼的可重用性和靈活性。文中首先介紹了struts概念和體系結構,闡述了struts的工作原理。然后介紹了小區物業管理系統各個功能模塊以及整個系統基于struts的開發流程。最后,通過一個應用示例,詳細介紹了struts框架在系統開發中的應用。
  關鍵詞  mvc;struts框架;web;物業管理系統;
 
  前言
 
  物業管理系統是近年來為適應小區建設和管理而興起的一種新型產業,它的出現為住宅小區的現代化管理提供了保障。目前,物業管理系統的開發方法很多,但多數系統在開發中存在系統結構復雜、代碼重用率低、網頁設計和軟件開發相互制約導致開發效率低下等不盡人意的地方。在系統設計過程中,我們綜合考慮系統結構、開發周期以及代碼重用等方面,決定采用先進的j2ee技術來開發這個應用系統,并全面貫徹mvc(model-view-controller)的開發模式。而struts作為一個實現良好的mvc框架,很好地將應用邏輯、處理過程和顯示邏輯分成不同的組件實現,對大型的復雜的web系統而言,可大大方便代碼開發和管理,提高開發效率。正是鑒于此特性,在設計小區物業管理系統時,我們采用了基于struts框架的系統構建模式。
 
  struts的體系結構
  作為一個實現良好的mvc框架,struts對model、view和controller都提供了對應的實現組件,圖1所示為struts體系結構圖。下面從模型、視圖、控制來介紹struts的體系結構。

圖1 struts構體系結圖
  視圖(view)就是一系列提交到客戶瀏覽器進行顯示的jsp文件,是用戶看到并與之交互的界面。在這些界面中沒有業務邏輯,也沒有模型信息,只有標簽。
  模型(model)表示應用程序的狀態和業務邏輯,通常由javabean或ejb組件來實現。
  控制器(controller)的作用是從客戶端接受請求,并且選擇執行相應的業務邏輯,然后把響應結果送回到客戶端。在struts中controller由actionservlet類和action類來實現。actionservlet主要負責接受http請求信息,action類負責調用模型的方法,更新模型的狀態,并幫助控制應用程序的流程。
  小區物業管理系統
 
  1、系統功能劃分
 
  小區物業管理系統是物業部門用來對住宅小區內的建筑、住戶、設備、人員等信息進行綜合管理的一個信息管理系統。根據客戶要求,系統要能對小區內建筑、公共設備、住戶等基本信息實現錄入、修改、查詢和刪除等操作,并且還要實現包括水、電、煤氣費在內的各項物業管理費用的統計、查詢和報表生成。因此,實現該物業管理系統功能模塊圖如下:

圖2 系統功能模塊圖
  各模塊實現的功能如下:
  (1)系統管理模塊
  系統管理模塊是整個物業管理系統的核心,在區分不同用戶的使用權限、加強軟件使用安全性和保證數據安全方面起著關鍵的作用。具體包括:用戶管理、用戶授權、更改密碼、系統設置、系統初始化、數據庫備份、恢復這幾個子模塊。
  (2)住戶管理模塊
  該模塊完成對新增住戶基本信息(姓名、人口、住房面積等)的登記和已有住戶信息的修改、查詢和刪除,是系統最基本的功能。該模塊具體又分為住戶登記、住戶修改、住戶修改、住戶查詢和住戶刪除四個子模塊。
  (3)設備管理模塊
  該模塊實現對小區內各項公共設備(如:路燈、排水管等)的管理,為各項設備建立信息檔案,記錄各設備檢查/維修/保養記錄。具體又分為設備登記、設備報修、設備檢查和設備保養這四個子模塊。
  (4)房產管理模塊
  該模塊主要是針對小區內的建筑,實現對小區內每一棟建筑、每棟建筑內的每套住房進行管理,考慮到業主對每個單元的買賣變更,該模塊還應該包括住房房產所有權的管理。該模塊具體分為:建筑圖紙管理、戶型圖紙管理、房產所有權管理等。
  (5)人事管理模塊
  該模塊主要是針對物業管理部門內部的工作人員的,實現對物業管理人員、保安/保潔人員的管理。包括:員工信息錄入、查詢、工資管理、員工考勤記錄和員工考核記錄這幾個子模塊。
  (6)收費管理模塊
  該模塊主要實現對已經入住的住戶進行費用(物業管理費、水費、電費和煤氣費)繳納的各方面管理,具體包括以下幾個部分:收費類別設置、收費項目設置、計量單位設置、表設置、用戶抄表、應收款和收款單等。 
  2、系統開發流程
  采用b/s模型的多層框架結構開發的小區物業管理系統,mvc模式主要對應應用服務器的部分,前端響應用戶的請求,后端負責與數據庫服務器之間的數據變換,中間為應用邏輯層,負責具體業務的處理。現依據struts框架的3個基本組成部分:視圖、模型和控制器,簡要描述系統的設計過程[4]。
  (1)視圖設計
  應用系統的用戶界面通常由jsp頁面組成。在系統的六個模塊中,各類信息的添加、刪除、修改和瀏覽都通過jsp頁面進行表現。系統在處理每個數據表示主要是用兩個jsp頁面進行表示:一個頁面用于數據的添加、刪除、修改,另一個頁面用于數據的瀏覽。
  (2)構建模型
  struts應用框架通常預先為每個應用所需要的輸入表單創建一個actionform bean。如果這些bean定義在actionmapping配置文件中,struts控制器servlet將自動執行這些預先設定的操作。因此,在系統開發中,首先為每個模塊建立相應的actionform bean,再根據每個模塊的實際功能為每個bean定義用戶操作狀態和視圖中所需要顯示數據信息的參數,視圖可以通過操作狀態的不同進行不同的界面表示。
  (3)構建控制器
  在struts應用框架中,中心控制器(actionservlet)接受所有來自客戶端的請求,并根據系統的配置文件struts-config.xml制定用戶http請求到其他action對象的路徑。中心控制器是由struts框架本身所提供,在系統開發中我們無須對actionservlet進行再開發,而負責具體業務處理的action類則是系統開發的重點。
  在視圖、模型、控制器對象設計完成后,需要編輯兩個配置文件:web.xml和struts-config.xml,通過它們配置struts系統中各個模塊之間的交互。
  struts框架在系統開發中的應用
  小區物業管理系統是一個復雜的大型web應用系統,為了能夠清楚地描述struts在系統開發中的應用,本文將以收費管理模塊中用戶成功登入系統并進行數據錄入和查詢這一應用為例進行較詳盡的說明。
  1、分析應用需求
 
  在該應用中,主要事件包括:
  (1)提供用戶登錄界面,提示用戶輸入用戶名和密碼,并能夠對用戶在客戶端輸入的數據進行簡單的數據格式驗證。若登錄成功,轉入主操作界面,否則給出錯誤提示信息,重新登錄。
  (2)由主操作界面轉入物業管理費錄入界面,用戶在表單中輸入相關信息(用戶id、日期),提交表單。若提交表單成功,則轉入確認界面,顯示用戶輸入的信息。
  (3)由主操作界面轉入查詢界面,用戶輸入相關信息后,查詢出某段時間內該用戶的物業管理費用。
  (4)用戶退出系統,返回主菜單頁面。
  2、該應用的具體設計
  2.1 數據庫設計
  針對該應用,需在數據庫中創建兩張表:porperty_table和user_table,各表結構如下:
表1   user_table
| 字段 | 類型 | 說明 | 
| username | char(25) | 記錄登錄到系統的用戶名 | 
| password | char(25) | 記錄登錄用戶的登錄密碼 | 
 
表2  porperty_table
| 字段 | 類型 | 說明 | 
| ownerid | char(8) | 記錄唯一表示每個用戶的id  | 
| date | datetime(8) | 記錄繳費日期 | 
| rare | float(8) | 記錄用戶的房屋面積 | 
| charge | float(8) | 記錄應該繳納的物業管理費 | 
| feestate | char(20) | 顯示用戶是否繳費 | 
  2.2 設計模型組件
  在struts框架中,模型組件負責完成業務邏輯。在該應用中,模型組件包括一個實用類dbconnect和兩jave bean:userbean和porpertybean。
  實用類dbconnect負責建立和數據庫的連接,所提供的connecttodb()方法具體來實現和數據的連接并返回這個連接。userbean代表用戶信息,包括username和password這兩個屬性。porpertybean代表物業費用信息,包括ownerid、data、ownername等幾個屬性。這兩個javabean提供了相應的get/set方法,此外還負責查詢以及向數據庫中對應的表添加/查詢記錄。
  2.3 用戶界面設計
  用戶界面是web應用和用戶的窗口,既可以接受用戶的輸入信息也可以向用戶輸出信息。表3列出了該應用中用到的用戶界面及其說明。
表3 用戶界面及其說明
| 界面 | 說明 | 
| welcome界面(index.jsp) | 顯示歡迎光臨信息,提供到登入界面的鏈接 | 
| 登入界面(logon.jsp) | 提示輸入用戶名和密碼 | 
| 主操作菜單界面(mainmenu.jsp) | 提供系統所有操作菜單 | 
| 物業收費數據錄入界面(input.jsp) | 提示輸入有關物業費用相關信息 | 
| 收費確認界面(confirmation.jsp) | 根據用戶錄入的信息返回該用戶物業費用的所有信息(如:應繳的費用,是否已繳費等) | 
| 物業費查詢界面(search.jsp) | 提供用戶輸入相關查詢條件 | 
| 顯示查詢結果界面(display.jsp) | 根據用戶查詢條件顯示查詢結果 | 
  為保持該應用中所有界面風格的一致性,在設計上述這些界面的過程中,我們除了使用標準的jsp<include>語句外,還使用了struts的titles框架來創建復合式的jsp頁面,使所有界面具有相同的頁頭和頁腳。
  2.4、設計actionform
  actionform bean用于在視圖組件和控制器組件之間傳遞html表單數據。通常每個html表單對應一個actionform bean,每個actionform的validate( )方法用于實現對用戶輸入數據進行格式和語法檢查。在該應用中包含三個actionform bean:logonform、inputform和searchform。
  2.5、設計action和action映射
  在struts框架中,action實現各個事件的流程控制,action映射決定action與其他web組件之間的關聯關系。表4列出了該應用中用到的action、每個action的入口(調用action的組件)、傳遞給action的actionform以及每個action把請求轉發到的目標組件即出口。
表4 該應用中的action
| action | 入口 | actionform | 出口 | 
| logonaction | logon.jsp | logonform | mainmenu.jsp | 
| inputaction | input.jsp | inputform | confirmation.jsp | 
| searchaction | search.jsp | searchform | display.jsp | 
| logoffaction | mainmenu.jsp | 無 | index.jsp | 
  圖3給出了該應用中action組件與其它組件的映射關系圖。

圖3 action映射圖
  上述所有action組件需要在struts的配置文件struts-config.xml中配置其映射關系。
  應用struts框架的優點   
  (1)整個物業管理系統包括上百個文件,若采用傳統的結構,要弄清楚某個視圖是使用什么模型來處理邏輯是件很復雜的事。而采用struts框架來開發的應用系統,依靠jsp和struts-config.xml以及它們間的統一命名規則卻很容易地進行系統流程的查勘、修改和理解。只要根據視圖form表單的action,在配置文件中找到同名的action定義,就可以得知其路徑以及相應的formbean。
  (2)struts中所有邏輯處理都封裝在class內,視圖部分不再介入邏輯的處理,計算和顯示清楚地分開了,在jsp頁面上沒有出現處理過程,在servlet或商業邏輯中沒有數據格式。并且基于struts框架開發出的jsp代碼也很簡潔,jsp頁面中不含有java代碼,只含有script和使用struts標簽庫的html,頁面開發人員不必為修改視圖而必須先理解模型,很大程度上提高程序開發效率。
  結束語
  struts是一個實現良好的mvc框架,在現代軟件開發中,越來越多的應用于大型web應用系統的開發。基于struts框架的小區物業管理系統的順利開發,也證實了struts框架是一種非常優秀的j2ee/mvc實現方式。該物業管理系統將為小區物業管理部門提供一個全新的工作環境,給物業管理的日常工作帶來了極大的方便,提高了工作效率,具有很好的推廣價值和應用前景。