基于SSI架構的建筑質量監(jiān)督系統(tǒng)的設計與實現(xiàn)
引 言
隨著中國的快速發(fā)展,建筑業(yè)已是中國國民經濟的主要支柱產業(yè)之一,而工程質量是建筑業(yè)發(fā)展的重要因素,直接關系到人民生命財產的安危。近年來,每個省份都越來越關注和重視建設工程質量的管理。本文所研究的采用基于MVC 模式的SSI 技術架構開發(fā)的建筑質量監(jiān)督系統(tǒng)對提高相關工作人員的效率及工程質量保障有重要意義。當前系統(tǒng)已經開發(fā)完畢,處于試運行階段,結果證明,該技術架構具有很好的擴展性、穩(wěn)定性,對工作人員工作效率的提升有很大幫助。
1 JeeSite設計思想
1.1 分層設計
分層設計(數(shù)據(jù)訪問層,業(yè)務邏輯層,展示層)層次清楚,低耦合,各層必須通過接口才能接入并進行參數(shù)校驗(如在展示層不可直接操作數(shù)據(jù)庫),可保證數(shù)據(jù)操作的安全。
1.2 雙重驗證
用戶表單提交雙驗證[1] 包括服務器端驗證及客戶端驗證, 防止用戶通過瀏覽器惡意修改(如不可寫文本域、隱藏變量篡改、上傳非法文件等)而跳過客戶端驗證操作數(shù)據(jù)庫。
1.3 安全編碼和密碼加密
用戶表單提交所有數(shù)據(jù),在服務器端進行安全編碼,防止用戶提交非法腳本及SQL 注入獲取敏感數(shù)據(jù)等,確保數(shù)據(jù)安全。登錄用戶密碼進行SHA1 散列加密,此加密方法不可逆, 以消除密文泄露后的安全隱患。
1.4 訪問和數(shù)據(jù)驗證
系統(tǒng)對所有管理端鏈接都進行用戶身份權限驗證 [2],以防止用戶直接通過URL 進入未授權頁面。對指定數(shù)據(jù)集權限進行過濾,七種數(shù)據(jù)權限可供選擇(所有權限,公司及子公司,本公司,部門及子部門,本部門,本人數(shù)據(jù),跨機構數(shù)據(jù))。
2 建筑質量監(jiān)督系統(tǒng)設計
2.1 建筑質量監(jiān)督系統(tǒng)功能設計
通過系統(tǒng)開發(fā)之前詳細的調研需求分析后,質量監(jiān)督系統(tǒng)分為基礎信息(人員信息管理、企業(yè)信息管理、項目信息管理) 和質量監(jiān)督(質量問題處理、驗收管理、統(tǒng)計報表、質量行為監(jiān)管、質量問題回復、監(jiān)督受理、質量監(jiān)督報告等)。其系統(tǒng)功能圖如圖 1 所示。
2.2 建筑質量系統(tǒng)架構的實現(xiàn)
建筑質量系統(tǒng)采用Java EE 三層結構,表現(xiàn)層是客戶端組件,主要功能在于顯示數(shù)據(jù);業(yè)務層的功能主要為業(yè)務和數(shù)據(jù)處理 ;數(shù)據(jù)層主要實現(xiàn)與數(shù)據(jù)庫的交互??蛻舳送ㄟ^組件與業(yè)務層建立連接,再由中間層與數(shù)據(jù)庫交互[3]。
實踐證明,采用Java EE 三層結構能有效降低建設和維護成本,并適應大規(guī)模和復雜的應用需求以及不斷擴展的業(yè)務需求。建筑質量系統(tǒng)架構如圖 2 所示。
3 關鍵技術和實現(xiàn)結果
3.1 Struts在表現(xiàn)層的實現(xiàn)
Struts是 基于模 型(Model)、 視 圖(View)、 控制 器(Controller)的MVC模式應用框架,MVC減弱了業(yè)務邏輯和數(shù)據(jù)接口之間的耦合,幫助開發(fā)者控制設計變更。在 Struts 框架中,Model代表應用的業(yè)務邏輯 ;View是應用的表示層, 由JSP頁面產生;Controller提供應用的處理過程控制,一般是Action Servlet。通過這種模式將應用邏輯、處理過程和顯示邏輯分成不同組件,組件之間進行交互和重用,組件化模式在大規(guī)模系統(tǒng)開發(fā)和管理方面更具優(yōu)勢。
客戶端通過表單或者Ajax 發(fā)起請求,系統(tǒng)根據(jù)客戶的請求路徑,通過Struts 的配置對用戶請求進行轉發(fā)控制,將客戶端提交的數(shù)據(jù)轉發(fā)到具體的Action 中處理[4]。其配置如下:
<filter>
<filter-name>encodingFilter</filter-name>
<filter- class>org.springframework.web.filter.Character EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在 SSI 集成架構中,Struts2 主要為表示層。本系統(tǒng)采用JSP 視圖。
3.2 Spring業(yè)務邏輯層的實現(xiàn)
Spring 是SSI框架中最重要的組成部分,文中描述的幾個關鍵技術點都基于Spring實現(xiàn)。Spring是為簡化企業(yè)級應用開發(fā)而創(chuàng)建的,它為企業(yè)級應用提供了一個輕量級解決方案, 其核心是依賴注入(DependencyInjection,DI)和面向切面編程(AspectOrientProgramming,AOP),通過配置文件來完成業(yè)務對象之間的依賴注入[5]。
Spring 通過依賴注入、Spring DAO 模式的使用、IoC 容器的使用、AOP 應用、面向接口編程,能降低業(yè)務組件之間的耦合度,增強系統(tǒng)擴展性。部分核心代碼如下:
<bean id="transactionManager"class="org.springframework.jdbc. datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx :annotation-driven transaction-manager="transactionManag
er"proxy-target-class="true"/>
3.3 iBatis持久層的實現(xiàn)
iBatis 是一個基于Java 的持久化框架。iBatis 是對象 / 關系數(shù)據(jù)庫(Object/Relational Mapping,ORM) 的映射工具, ORM 將對象模型表示的對象映射到基于SQL 的關系模型數(shù)據(jù)結構中。在持久層中封裝了對數(shù)據(jù)庫訪問的細節(jié),向業(yè)務邏輯公開接口,保證建立在數(shù)據(jù)持久層之上的應用程序能夠方便訪問需要的數(shù)據(jù)源。核心代碼如下:
<!-- 掃描basePackage下所有以@MyBatisDao注解的接口-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName"value="s qlSessionFactory"/>
<property name="basePackage"value="com.thinkgem. jeesite"/>
<property name="annotationClass"
value="com.thinkgem.jeesite.common.persistence. annotation.MyBatisDao"/>
</bean>
3.4 部分功能實現(xiàn)效果
建筑質量監(jiān)督系統(tǒng)的主要目的是方便建設單位、施工單位、勘察單位、設計單位、監(jiān)理單位、質量檢測六方單位的辦公, 提高工作效率。企業(yè)用自己的賬號登錄系統(tǒng),進入企業(yè)中心頁面。要對工程進行質量監(jiān)督,首先企業(yè)需要登錄系統(tǒng)的 [ 企業(yè)中心]--[ 監(jiān)督注冊登記],錄入該標段工程的相關信息。系統(tǒng)界面如圖 3所示。
圖 3 系統(tǒng)界面
結 語
本文基于多個優(yōu)秀的開源項目,設計出經高度整合封裝而成的具有高效、高性能、強安全性的開源 Java EE 快速開發(fā)平臺JeeSite,并介紹了建筑質量系統(tǒng)的實現(xiàn)。結合實際用戶的體驗,均反映該系統(tǒng)可大大提高六方單位人員的工作效率。