◆陳如明 洪軼群
基于SSH框架的指靜脈考勤管理系統(tǒng)
◆陳如明 洪軼群
(廈門(mén)煙草工業(yè)有限責(zé)任公司 福建 361000)
考勤管理系統(tǒng)是當(dāng)今人事管理信息化的一種必然趨勢(shì),它不僅可以為企業(yè)的人事管理節(jié)省大量人力資源并且還能大幅度提高管理效率。為完成企業(yè)委托的指靜脈考勤管理系統(tǒng),本文根據(jù)企業(yè)方的實(shí)際需求進(jìn)行相應(yīng)的需求分析與設(shè)計(jì),采用MVC設(shè)計(jì)模式,通過(guò)基于JAVA的Struts2、Spring和Hibernate三大框架以及現(xiàn)今流行的MySQL數(shù)據(jù)庫(kù)完成該考勤管理系統(tǒng)web項(xiàng)目。企業(yè)可通過(guò)該管理系統(tǒng)更好進(jìn)行外派工作的考勤定位、工作管理、任務(wù)下發(fā)等工作,實(shí)現(xiàn)企業(yè)信息化、現(xiàn)代化管理的目的。
考勤管理系統(tǒng) MVC SSH框架
以往的考勤管理解決法案基本上有兩種,一種是感應(yīng)卡打卡考勤,另一種則是指紋打卡考勤。第一種幾乎是處于淘汰狀況,因?yàn)檫@種方法在企業(yè)規(guī)章制度不完善的公司容易出現(xiàn)各種代打卡的情況出現(xiàn),同時(shí)也會(huì)出現(xiàn)企業(yè)員工在上下班的時(shí)候造成人員擁堵的情況,因此這種方法幾近被淘汰;第二種方式則是現(xiàn)在的主流模式,雖然指紋打卡可以有效地確保員工打卡的真實(shí)性,但是該方法也無(wú)法解決在員工上下班的時(shí)候造成擁堵的問(wèn)題,而且主要問(wèn)題在于考勤速度相對(duì)于感應(yīng)卡式考勤機(jī)較慢,針對(duì)手指紋破損、指紋打卡方法不正確部分,不予識(shí)別,統(tǒng)計(jì)煩瑣機(jī)械故障率較高。
為解決這些存在的問(wèn)題,基于移動(dòng)端的指靜脈考勤應(yīng)運(yùn)而生,通過(guò)移動(dòng)終端設(shè)備配合指靜脈感應(yīng)模塊能夠有效避免考勤速度慢和人員擁擠的情況。為了配合指靜脈考勤,需要建立起一套合理有效的后臺(tái)管理系統(tǒng)。本系統(tǒng)通過(guò)Struts2、Spring和Hibernate三大框架的整合,后臺(tái)數(shù)據(jù)庫(kù)采用MySQL,將企業(yè)員工的考勤定位、工作管理、任務(wù)發(fā)配等信息通過(guò)接口的形式接收和返回,企業(yè)可通過(guò)該管理系統(tǒng)配合指靜脈考勤機(jī)更好進(jìn)行外派工作的考勤定位、工作管理、任務(wù)下發(fā),有利于實(shí)現(xiàn)企業(yè)信息化、現(xiàn)代化管理,并能高效合理的管理外派人員的工作。
(1)出行軌跡記錄:后臺(tái)接收終端設(shè)備采集定位數(shù)據(jù)并完整保存今日該負(fù)責(zé)人的行車(chē)出行軌跡,記錄該負(fù)責(zé)人當(dāng)前所在位置的實(shí)時(shí)地理信息。在前端調(diào)用時(shí)返回相應(yīng)的地理位置數(shù)據(jù)。
(2)項(xiàng)目考勤管理:當(dāng)用戶到達(dá)項(xiàng)目指定執(zhí)行地點(diǎn)之后,執(zhí)行今日打卡,上傳當(dāng)前團(tuán)隊(duì)成員的打卡信息以及打卡地理坐標(biāo)至后臺(tái)服務(wù)器。
(3)項(xiàng)目任務(wù)分配管理:通過(guò)文件導(dǎo)入操作,將供電局提供的任務(wù),導(dǎo)入我們的系統(tǒng)平臺(tái),通過(guò)相應(yīng)的文件操作處理,歸類劃分任務(wù)工種信息,根據(jù)相應(yīng)的工種信息,獲取特定的任務(wù)內(nèi)容,生成相應(yīng)的任務(wù)模板格式。項(xiàng)目管理員,根據(jù)任務(wù)工種,篩選任務(wù)清單,獲取相應(yīng)的可分發(fā)的負(fù)責(zé)人清單,以及負(fù)責(zé)人所對(duì)應(yīng)的分包公司的執(zhí)行名單。選擇某一或N個(gè)負(fù)責(zé)人,將該任務(wù)推送到負(fù)責(zé)人所綁定終端設(shè)備,負(fù)責(zé)人通過(guò)終端設(shè)備,查看對(duì)應(yīng)任務(wù)內(nèi)容,進(jìn)行項(xiàng)目考勤管理操作。
(4)項(xiàng)目負(fù)責(zé)人管理:新增、修改、刪除、查詢負(fù)責(zé)人的基本信息、工作狀態(tài)、歷史工作記錄信息。為負(fù)責(zé)人分配所需對(duì)接的分包公司。
(5)分包公司管理:新增、修改、刪除、查詢分包公司成員的基本信息;隨負(fù)責(zé)人出工的歷史工作記錄信息,當(dāng)前工作狀態(tài)。
(6)后臺(tái)管理人員:后臺(tái)管理系統(tǒng)的登入和信息修改設(shè)置。
保證考勤管理系統(tǒng)的穩(wěn)定性、公平性和安全性,要求能在面對(duì)簡(jiǎn)單的攻擊下保持系統(tǒng)正常運(yùn)作,能對(duì)異常的請(qǐng)求和簡(jiǎn)單的注入攻擊做出預(yù)防處理。保證考勤管理系統(tǒng)的在一定的攻擊情況下保持穩(wěn)定性,防止請(qǐng)求被抓包盜用而產(chǎn)生的各種危害并保護(hù)用戶的資料不被攻擊者竊取。
設(shè)計(jì)和配置Struts2攔截器方法,基于面向切面編程的思想對(duì)每個(gè)用戶請(qǐng)求的有效性和真實(shí)性進(jìn)行驗(yàn)證,對(duì)錯(cuò)誤和非法的用戶請(qǐng)求進(jìn)行攔截。對(duì)每個(gè)請(qǐng)求的有效時(shí)間進(jìn)行驗(yàn)證,防止DDOS攻擊對(duì)服務(wù)器帶來(lái)危害。
通過(guò)配置過(guò)濾器,驗(yàn)證當(dāng)前用戶的會(huì)話狀態(tài),過(guò)濾提交表單中的危險(xiǎn)字符參數(shù),預(yù)防簡(jiǎn)單的SQL注入和XSS跨站腳本注入,防止攻擊者通過(guò)進(jìn)行SQL注入和XSS跨站腳本注入攻擊服務(wù)器從而造成用戶信息丟失或者導(dǎo)致服務(wù)器癱瘓。
跨站腳本攻擊(XSS)是Web應(yīng)用程序中經(jīng)常發(fā)生的網(wǎng)頁(yè)安全漏洞,它允許惡意網(wǎng)頁(yè)用戶將代碼嵌入到可供其他用戶使用的頁(yè)面中,這些代碼包括HTML代碼、客戶端腳本以及JS腳本。攻擊者可以輕易地通過(guò)腳本的注入獲取到其他網(wǎng)頁(yè)用戶的信息。
SQL注入漏洞是指攻擊者把具有攻擊數(shù)據(jù)庫(kù)或查看數(shù)據(jù)庫(kù)數(shù)據(jù)的SQL指令插入頁(yè)面表單,通過(guò)發(fā)送請(qǐng)求傳送到后臺(tái),后臺(tái)程序在一定條件下運(yùn)行SQL命令時(shí),由于攻擊者的SQL注入而錯(cuò)誤的執(zhí)行了SQL指令將數(shù)據(jù)庫(kù)數(shù)據(jù)返回給攻擊者。從而達(dá)到盜取數(shù)據(jù)庫(kù)數(shù)據(jù)或攻擊數(shù)據(jù)庫(kù)的目的。
本項(xiàng)目數(shù)據(jù)庫(kù)以存儲(chǔ)和管理后臺(tái)管理員、工作人員、項(xiàng)目負(fù)責(zé)人、項(xiàng)目信息以及分包公司的信息為主,對(duì)數(shù)據(jù)表進(jìn)行設(shè)計(jì),以及負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)管理、日常維護(hù)和后續(xù)優(yōu)化工作。
要求根據(jù)項(xiàng)目的需求創(chuàng)建科學(xué)合理的數(shù)據(jù)庫(kù),保證數(shù)據(jù)庫(kù)和系統(tǒng)的穩(wěn)定性、安全性。設(shè)計(jì)合理的設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),防止出現(xiàn)冗余數(shù)據(jù)。制定統(tǒng)一的數(shù)據(jù)表和字段的命名標(biāo)準(zhǔn),明確各個(gè)字段的數(shù)據(jù)類型和長(zhǎng)度,基于最小優(yōu)化原則,在保證能正確的存儲(chǔ)所需的數(shù)據(jù)情況下,字段盡量采用最簡(jiǎn)單的數(shù)據(jù)類型和最小數(shù)據(jù)長(zhǎng)度。通過(guò)添加必要的約束條件以維護(hù)數(shù)據(jù)庫(kù)的穩(wěn)定性和數(shù)據(jù)的完整性。數(shù)據(jù)庫(kù)表結(jié)構(gòu)圖如圖1所示。
系統(tǒng)中各個(gè)模塊功能的實(shí)現(xiàn)大體過(guò)程主要是通過(guò)瀏覽器或移動(dòng)終端調(diào)用action請(qǐng)求,將表單數(shù)據(jù)post/get的方式上傳的服務(wù)器,服務(wù)器根據(jù)Struts2配置文件響應(yīng)action請(qǐng)求,根據(jù)action請(qǐng)求通過(guò)調(diào)用業(yè)務(wù)邏輯層的實(shí)現(xiàn)方法返回給前端瀏覽器或者移動(dòng)終端數(shù)據(jù)。
項(xiàng)目中Struts2采用注解方式配置。每個(gè)Action繼承于BaseAction類,BaseAction中封裝有響應(yīng)JSON格式數(shù)據(jù)的方法,用于各個(gè)Action返回給瀏覽器前端或者移動(dòng)終端數(shù)據(jù),BaseAction的具體代碼如圖2所示。每個(gè)Action都實(shí)現(xiàn)了Struts2里的ModelDriver接口,通過(guò)ModelDriver接口實(shí)現(xiàn)了前端或移動(dòng)終端上傳的表單數(shù)據(jù)自動(dòng)封裝成Bean對(duì)象的功能。以負(fù)責(zé)人模塊的Action為例,項(xiàng)目中的Action類基本格式如圖3所示。
圖1 數(shù)據(jù)庫(kù)表結(jié)構(gòu)圖
圖2 BaseAction具體代碼
圖3 Action基本格式
通過(guò)設(shè)計(jì)自定義攔截器方法和配置Struts2攔截器保證驗(yàn)證請(qǐng)求的有效性。具體實(shí)現(xiàn)方法為使每個(gè)請(qǐng)求發(fā)起時(shí)都帶有生成時(shí)間戳和簽名,簽名的生成由時(shí)間戳和某些參數(shù)的加密字符串組成,后臺(tái)通過(guò)自定義的攔截器方法對(duì)應(yīng)解密,判斷請(qǐng)求是否超時(shí)或者無(wú)效。本項(xiàng)目中簽名由時(shí)間戳和其他參數(shù)通過(guò)MD5加密后進(jìn)行增加字符串混亂排序,增加簽名被破解的難度。簽名生成過(guò)程如圖4所示:
圖4 簽名生成過(guò)程
本文介紹了通過(guò)整合Struts2、Spring和Hibernate三大框架,搭建指靜脈考勤系統(tǒng)實(shí)現(xiàn)后臺(tái)邏輯處理和數(shù)據(jù)的保存和調(diào)用。企業(yè)可通過(guò)該管理系統(tǒng)配合指靜脈考勤機(jī)更好進(jìn)行外派工作的考勤定位、工作管理、任務(wù)下發(fā),有利于實(shí)現(xiàn)企業(yè)信息化、現(xiàn)代化管理,進(jìn)而高效合理管理外派人員的工作。
隨著未來(lái)指靜脈考勤的興起和流行,伴隨其而來(lái)的后臺(tái)管理也將需要一個(gè)科學(xué)的、可行的方案。本論文通過(guò)對(duì)Strutt2、Spring和Hibernate的探究以及對(duì)考勤管理系統(tǒng)需求的具體考察,對(duì)系統(tǒng)、功能的設(shè)計(jì)實(shí)現(xiàn)過(guò)程以及安全策略的實(shí)現(xiàn)過(guò)程進(jìn)行了詳細(xì)的介紹,提出了一種科學(xué)合理的解決方案。為將來(lái)的考勤管理系統(tǒng)設(shè)計(jì)提供一種解決思路。
[1]李剛.Struts2權(quán)威指南[M].電子工業(yè)出版社,2007:12-22.
[2]Rod Johnson,Juergen Hoeller.Expert One-on-One J2EE Development without EJB[M].US:Wrox Press,2004:54-57.
[3]王玉芹.基于Hibernate的論文中心管理系統(tǒng)設(shè)計(jì)[D]. 吉林:吉林大學(xué),2008.
[4]王鵬.產(chǎn)科超聲規(guī)范化信息系統(tǒng)的研究和實(shí)現(xiàn)[D].沈陽(yáng):東北大學(xué),2009.
[5]百度百科_MySQL[ol],https://baike.baidu.com/item/m-ySQL/471251?fr=Aladdin.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2019年5期