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