張 宓
(呼和浩特市消防支隊,內(nèi)蒙古 呼和浩特 010010)
創(chuàng)新基層黨建工作,夯實黨執(zhí)政的組織基礎(chǔ)是全面提高黨的建設(shè)科學(xué)化水平的重要任務(wù)之一。但是隨著改革的深化和社會的發(fā)展,基層黨建工作的矛盾、問題逐漸顯現(xiàn)出來。呼和浩特市消防支隊對此專門采取了一些措施:第一,深化干部任用制度改革,建設(shè)高素質(zhì)領(lǐng)導(dǎo)干部隊伍。第二,加強黨員培訓(xùn)工作。第三,增強基層黨員的管理。為了全面提高黨的科學(xué)化管理水平,進一步優(yōu)化基層黨建的管理,設(shè)計與實現(xiàn)一套切實可行的黨員管理系統(tǒng),是很有必要的[1]。
目前對黨員管理現(xiàn)代化的成果,可以總結(jié)為兩個方面:一是關(guān)于軟件系統(tǒng)分析設(shè)計與實現(xiàn)的理論和相關(guān)技術(shù)已經(jīng)相當(dāng)成熟,類似黨員管理系統(tǒng)的分析設(shè)計與實現(xiàn)的理論和相關(guān)技術(shù)也已經(jīng)很成熟。二是運用這些技術(shù)開發(fā)的許多信息管理系統(tǒng),有了很多進步。一些Web應(yīng)用軟件系統(tǒng)例如財務(wù)系統(tǒng)、警務(wù)管理系統(tǒng)、黨員管理系統(tǒng)等得到了很好的應(yīng)用,當(dāng)然也包括一些黨務(wù)管理信息化系統(tǒng)[2]。但是由于各地社會現(xiàn)狀和管理實際的差異,設(shè)計并實現(xiàn)一套適合呼和浩特市消防支隊的黨員管理系統(tǒng)是很有必要的。通過分析呼和浩特市消防支隊各級黨組織以及所屬的部門黨員管理現(xiàn)狀,運用JAVA開源框架技術(shù)、SSH整合框架和JSP技術(shù)等設(shè)計了呼和浩特市消防支隊黨員管理系統(tǒng)[3],規(guī)范了呼和浩特市消防支隊各級黨組織管理工作。
為了滿足呼和浩特市消防支隊進行黨員管理的現(xiàn)實需求,系統(tǒng)功能模塊主要包括基本信息管理、黨員發(fā)展管理、預(yù)備黨員管理等9個功能模塊,如圖1所示。系統(tǒng)用戶分為系統(tǒng)管理員、業(yè)務(wù)管理員、支部管理員、普通用戶和黨務(wù)工作分管領(lǐng)導(dǎo)五類,不同用戶具有的操作權(quán)限不同。
圖1 系統(tǒng)功能模塊圖
1.1 基本信息管理包括對支部信息、黨員信息和歷史信息的管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員只具有黨員信息管理和歷史信息管理的權(quán)限。普通用戶能夠查看自己的黨員信息。領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.2 黨員發(fā)展管理包括入黨申請、積極分子和發(fā)展對象的管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員也有三個模塊的功能。普通用戶作為黨員只能進行自己的思想?yún)R報等信息錄入,領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.3 預(yù)備黨員管理模塊主要是對人員信息進行管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員也具有此模塊的功能。普通用戶作為預(yù)備黨員只能進行自己的思想?yún)R報等信息錄入,領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.4 黨員進出管理模塊主要包括黨籍的恢復(fù)停止的管理、組織關(guān)系轉(zhuǎn)入轉(zhuǎn)出管理、黨員流動記錄的管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員也具有此模塊的全部功能,普通用戶和領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.5 組織生活管理包括對通知、年度工作情況、黨員轉(zhuǎn)正、三會一課、黨員教育培訓(xùn)、落實七項組織生活制度和黨支部改選等的管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員也具有此模塊的全部功能。普通用戶只能進行自己的思想?yún)R報等信息錄入,領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.6 黨員懲處管理主要對包括黨員獎勵管理、黨員懲處管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員也具有此模塊的功能,普通用戶和領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.7 黨費收繳管理主要是對繳費信息管理、綜合條件查詢管理、交費管理、交費狀態(tài)管理和退費管理。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員也具有此模塊的功能,普通用戶和領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.8 查詢統(tǒng)計模塊管理包括系統(tǒng)中各種基本數(shù)據(jù)的查詢、分析統(tǒng)計,并以表、柱圖等方式進行統(tǒng)計結(jié)果顯示。基本數(shù)據(jù)例如黨費標準變更、黨員基本信息等。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員只具有查詢黨員基本信息、黨費收繳統(tǒng)計信息的權(quán)限,普通用戶和領(lǐng)導(dǎo)用戶沒有此模塊的權(quán)限。
1.9 系統(tǒng)管理模塊管理主要是組織機構(gòu)管理、黨費標準管理、用戶管理、密碼查詢管理、數(shù)據(jù)管理。該模塊系統(tǒng)管理員或業(yè)務(wù)管理員有操作權(quán)限。系統(tǒng)管理員和業(yè)務(wù)管理員大體一致,具有此模塊的最高權(quán)限。支部管理員、普通用戶和領(lǐng)導(dǎo)用戶只能進行用戶登錄和查看公告以及一般資源的下載。
數(shù)據(jù)庫設(shè)計一般包含有數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計和數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計[4]。針對呼和浩特市消防支隊黨員管理系統(tǒng)的具體應(yīng)用背景和黨員管理的數(shù)據(jù)需求,進行如下數(shù)據(jù)庫設(shè)計:
2.1 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計
根據(jù)系統(tǒng)數(shù)據(jù)需求分析結(jié)果,黨員管理系統(tǒng)包括的實體數(shù)據(jù)有黨員信息表、黨內(nèi)職務(wù)表、組織機構(gòu)信息表、支部信息表、黨籍停止/恢復(fù)記錄表、人員發(fā)展信息表、公告信息表、黨員獎懲信息表、黨費信息表等。呼和浩特消防市支隊黨員管理系統(tǒng)中各個數(shù)據(jù)實體之間的關(guān)系如圖2所示。
圖2 系統(tǒng)數(shù)據(jù)庫概念結(jié)構(gòu)圖
2.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計
根據(jù)上述數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計,現(xiàn)對數(shù)據(jù)實體關(guān)系圖中的黨員信息表、黨內(nèi)職務(wù)表、組織機構(gòu)信息表、支部信息表、黨籍停止/恢復(fù)記錄表、人員發(fā)展信息表、公告信息表、黨員獎懲信息表、黨費信息表進行邏輯結(jié)構(gòu)設(shè)計。系統(tǒng)涉及的表很多,只列舉黨員信息表,如表1所示。
表1 組織機構(gòu)信息表
根據(jù)規(guī)范的軟件工程技術(shù)理論,采用分層模塊化思想對系統(tǒng)實現(xiàn)框架進行設(shè)計。分層模塊化思想使得系統(tǒng)各層分工明確、開發(fā)效率高、穩(wěn)定性高、耦合度低、易擴展維護。系統(tǒng)分層實現(xiàn)框架分為4層,分別為實體層、Dao層、業(yè)務(wù)邏輯層、Web層,如圖3所示。
圖3 系統(tǒng)分層實現(xiàn)框架圖
3.1 實體層是由實體類和Hibernate中的映射文件.xml等組成。根據(jù)數(shù)據(jù)庫二維表之間的關(guān)系,確定持久化類之間的關(guān)系,完成Hibernate Mapping文件和持久化類。
3.2 Dao層是由Dao接口和實現(xiàn)類組成,封裝了數(shù)據(jù)庫的所有操作。
3.3 業(yè)務(wù)邏輯層包括Service接口和相應(yīng)實現(xiàn)類,實現(xiàn)黨員管理系統(tǒng)的所有業(yè)務(wù)操作。
3.4 Web層包括兩層,控制層和視圖層??刂茖又饕怯脕硖幚硐到y(tǒng)與網(wǎng)頁面的交互,保證系統(tǒng)功能的實現(xiàn)。視圖層主要有用于接受用戶請求的網(wǎng)頁組成,用戶獲取用戶請求,完成操作的功能。
黨員管理系統(tǒng)的實現(xiàn)每個功能管理模塊中的所有功能需要用到的類和接口主要為5個。分別為XXXDaoImpl類、XXXServiceImplement類、XXXAction類和XXXIDao接口、XXXIService接口。XXXAction類是業(yè)務(wù)控制類存放在action包中;XXXIService接口和XXXServiceImplement類是實現(xiàn)模塊業(yè)務(wù)邏輯功能的接口和類,存放在service包中;XXXDaoImpl類和XXXIDao接口是實現(xiàn)模塊管理的需要的數(shù)據(jù)庫操作,存放在dao包中;除此之外還有model包和utils包。Model存放所有功能管理模塊需要的實體類,Utils存放一些系統(tǒng)通用的Java類。用戶管理模塊的類與接口之間的關(guān)系如圖4所示。
圖4 用戶管理模塊類圖
在系統(tǒng)安全方面設(shè)計方面主要考慮了兩點:一是在用戶登錄時防止SQL注入情況的發(fā)生,還有一點就是在用戶注冊時將用戶密碼這個字段利用MD5加密算法后再存入數(shù)據(jù)庫。
5.1 防止SQL注入
在Java數(shù)據(jù)庫連接技術(shù)JDBC中,要執(zhí)行SQL語句則需要獲得執(zhí)行SQL語句的句柄,通過JDBC API可以獲得Statement和Prepared Statement接口對象。如果采用Statement對象只能執(zhí)行靜態(tài)SQL語句,而利用Prepared Statement對象則具有提供預(yù)編譯機制、執(zhí)行效率高(如果多次執(zhí)行同一SQL語句)和安全性高等優(yōu)點。采用Statement對象執(zhí)行SQL語句,系統(tǒng)用戶登錄進行驗證編寫SQL語句如下:
String sql = "select * from tb_name where name= '"+varname+"' and passwd='"+varpasswd+"'";
當(dāng)我們把[' or '1' = '1]作為密碼varpasswd傳入SQL造成什么后果?不管用戶名和密碼是什么結(jié)果能登錄成功。這條SQL顯然是惡意SQL語句。
如果要避免這個情況可以使用PreparedStatement對象來執(zhí)行SQL語句,這樣可以在SQL語句中使用占位符“?”。使用了占位符系統(tǒng)用戶登錄進行驗證編寫SQL語句如下:
String sql = "select * from tb_name where name=? andpasswd=?";
然后程序運行過程中再使用如下程序語句為占位符設(shè)置參數(shù)值:
pstm.setString(1, "張三");//假設(shè)登錄用戶名為張三
pstm.setString(2, "123456");//假設(shè)登錄密碼為123456
5.2 數(shù)據(jù)MD5加密
MD5實際就是信息-摘要算法(Message-Digest Algorithm),在上世紀九十年代初期由Ronald研究實現(xiàn)的,其發(fā)展過程中經(jīng)歷了MD2、MD3和MD4等幾個階段。通過MD5加密算法可以將一個任意長度的字符串轉(zhuǎn)化為一個長度固定的十六進制的大整數(shù)。例如字符串“123456”經(jīng)過MD5加密后轉(zhuǎn)化為“e10adc3949ba59abbe56e057f20f883e”這樣的一個整數(shù)串,二次加密后變?yōu)椤?4e1b600b1fd579f47433b88e8d85291”這樣的一個整數(shù)串??梢钥闯鐾ㄟ^加密之后,增加了數(shù)據(jù)復(fù)雜度,有效提高了數(shù)據(jù)的安全性。
在本系統(tǒng)的實現(xiàn)過程中,在保存用戶記錄的密碼字段時就是通過MD5算法加密后才進行存儲的。
系統(tǒng)項目工程結(jié)構(gòu)圖如圖5所示。系統(tǒng)src下包含5個包。分別為action包、service包、dao包、model包以及utils包。Action存放每個功能模塊的控制程序運行流程的類,XXXAction.java。Action調(diào)用service包中的類。Service包存放實現(xiàn)每個模塊功能的業(yè)務(wù)邏輯功能的Java類以及接口,XXXIService接口和XXXServiceImplement類。Service包調(diào)用包包中的類。Dao包存放實現(xiàn)每個功能模塊的數(shù)據(jù)庫操作類,XXXDaoImpl類和XXXIDao接口。Model存放所有功能管理模塊需要的實體類。Utils存放一些系統(tǒng)通用的Java類。
Hibernate.cfg.xml、struts.xml和applicationContext.xml分別為Hibernate、Struts2和Spring的配置文件。Hibernate.cfg.xml主要配置連接數(shù)據(jù)庫需要的信息,例如數(shù)據(jù)庫用戶名、密碼、URL等。Struts.xml負責(zé)設(shè)置網(wǎng)頁跳轉(zhuǎn)、類的調(diào)用等。ApplicationContext.xml進行Java組件關(guān)系的配置。
本文根據(jù)呼和浩特市消防支隊黨員的具體情況,提出了呼和浩特市消防支隊黨員管理系統(tǒng)分析設(shè)計方案并進行了科學(xué)合理的開發(fā),實現(xiàn)了對黨員基礎(chǔ)管理(黨員發(fā)展、黨費、獎懲、出行、組織生活等)和黨的先進思想學(xué)習(xí)等科學(xué)有效的管理,滿足了呼和浩特市消防支隊對黨員管理的實際需求。
參考文獻:
[1] 朱文增,蘇鴻根.SOA架構(gòu)在高校黨員管理系統(tǒng)中的應(yīng)用研究[J].科技信息,2010,12(22):259-260.
[2] 張凱春.社區(qū)黨務(wù)管理信息系統(tǒng)的設(shè)計與實現(xiàn)[D].廈門:廈門大學(xué).2013:1-9.
[3] 梁弼.SSH框架整合技術(shù)研究及應(yīng)用[J].西安文理學(xué)院學(xué)報(自然科學(xué)版),2011,14(3):16-19.
[4] FERNANDO B.Java tools and frameworks for web application development[J].IEEE Distributed Systems Online,2005(5):1-5.