柏云飛
【摘要】在21世紀的信息時代,“信息”的革命讓人類的溝通更加便捷。同時企業之間的人才競爭也越來越來激烈,因而有必要開發一套網絡人才招聘系統,以滿足企業的人才戰略需求。該系統既幫助企業更加有效,快速的找到自己所需的人才,又為求職者提供了一個安全可靠的求職渠道。系統采用SSH框架進行構建,Mysql作為數據存儲,利用軟件工程思想和方法進行開發。
【關鍵詞】招聘系統;求職網站;SSH
Abstract:The 21st century is the era of information,"information"revolution so that human communication more convenient.Now talent competition between enterprises is also growing too large.The advent of the Internet Recruitment system both to help businesses more effectively,quickly find the talent they need,and to provide a safe and secure job seekers job search channels.This paper discusses how to use the technology to build a secure and reliable j2ee recruitment system and solve some of today's job sites exist pertinence of information and low fidelity issues.This system built using SSH framework,Mysql as data storage and using software engineering ideas and methods.
Keywords:Recruitment System;Job System;SSH
1.引言
隨著經濟和社會的發展,越來越多的人才涌入社會以及社會再就業人員的不斷加大,導致就業的壓力不斷增大。怎樣快速有效的獲取就業信息,對所有求職者來說至關重要。而網上人才招聘系統的出現簡化了招聘流程并且給求職者以及企業帶來了更多的選擇。
2.系統總體框架
本系統將采用SSH(String2,Spring3, Hibernate4)進行構建。使用SHH進行開發的好處就是將軟件分為表現層、中間層(業務邏輯層)和數據服務層。三層體系將業務規則、數據訪問及合法性校驗等工作放在中間層處理。客戶端不直接與數據庫交互,而是通過組件與中間層建立連接,再由中間層與數據庫交互。Struts主要用于MVC的分離,實現控制業務跳轉,而Hibernate框架用于對持久層提供支持,Spring主要管理struts和hibernate。
該網上人才招聘系統主要分為兩種用戶即求職者與招聘者,所以根據兩種主要用戶需要完成的需求就分為了求職和招聘兩大模塊。
圖1 系統整體框架圖
3.系統的業務邏輯
3.1 更新簡歷
當會員登入成功之后,用戶可以對簡歷信息進行管理。由于在此頁面需要登入后才能夠查看,所以此處的action配置了一個攔截器主要用來判斷用戶的狀態,如果是不是登入用戶則沒有權限訪問。想要更新簡歷,首先需要將該用戶的簡歷信息插座出來,在為了保證數據的安全性,禁止通過Get傳參的形式直接將簡歷的主鍵Id作為查詢條件,因為Get的值很有可能被修改而造成數據的紊亂。而我采用的通過Session中的Uid在簡歷表中查找,因為Session中保存的就是該用戶的狀態,安全性得到提高。用戶首次更新簡歷其實在簡歷表中是沒有該用戶簡歷信息的,當點擊更新簡歷按鈕時需要判斷該用戶是否是首次更新,防止數據庫中記錄的重復插入。
3.2 發布職位
如果注冊用戶想要發布職位必須通過綁定公司郵箱,當我們輸入需要綁定的公司郵箱名以及公司名稱,程序會發送一封郵件給給你填寫的郵箱地址,當點擊郵箱中的鏈接并且驗證成功之后才能夠發布職位。此舉主要是考慮到職位信息的有效性。
具體算法如下:
(1)填寫郵箱地址,匹配該郵箱地址是否正確;
(2)根據該Email,生成一個UUID唯一碼,并插入user表中;
(3)使用sendEmail方法發送驗證郵件;
(4)當點擊郵件中鏈接時會去個妞email和code在表user中查找是否存在該條記錄,如果存在則郵件驗證成功,允許發布職位,否者驗證失敗;
當完成郵箱的驗證之后就可以發布職位了,發布的職位會顯示在職位列表當中,以便我們在此頁面對發布的職位進行重新編輯以及刪除操作。
3.3 編輯職位
當選擇編輯職位按鈕,主要經過了以下幾個操作:
(1)根據JobId查找以及保存在Session中的uid查找該職位;
(2)判斷職位是否存在如果存在則將數據顯示出來否則進入錯誤頁;
在第(1)步當中之所以需要根據jobId和uid共同查詢,而不單單只是根據jobId來查詢,主要考慮到Get中的參數是可以在URL地址欄中是可以被修改的,所以就會有這么一種情況,當有人惡意的修改了Url中jobId的參數值的時候,如果只是根據jobId去查找的話,很有可能查找出來的數據庫是別人的,很明顯這是不允許的。現在加上uid這個查詢條件就可以保證查找出來的數據是登入者的了。
3.4 刪除職位
當職位過期,或者該職位失效的時候,我們需要有刪除職位的需求。考慮到可能存在誤操作,所以需要通過Js彈出一個確認框,保證用戶是在正常的情況下刪除的。
從安全性角度考慮,刪除職位是通過JobId進行刪除的,但是往往這個JobId是很容易被非法篡改的,一旦JobId被篡改就可能會出現你刪除的職位是別人的,而這是不允許的出現的情況,所以在刪除時需要在條件中多加一層判斷,判斷該簡歷的Uid確實屬于登入者。
3.5 投遞簡歷
當用戶注冊之后就可以投遞簡歷了,基本流程如下:
(1)判斷是否以及登入,如果未登入則前往登入界面。
(2)求職者點擊投簡歷按鈕便可將預先自己編輯好的簡歷,投遞到職位發布者那頭,此處需要判斷該職位的發布者不是登入用戶,因為招聘者不能夠投遞自己發布的職位。
(3)當求職者完成申請,發布該職位的用戶就可以在發布的職位列表頁查看該職位的投遞情況了,點擊“投遞情況”按鈕,就可以查看有哪些用戶投遞了該職位以及這些用戶的簡歷。
4.安全性考慮
為了提高網站的安全性,以及保護用戶隱私,我主要從以下幾個方面來提高網站的安全性。
密碼加密:該系統采用的是MD5加密方法,這也是一種主流的不可逆的加密方法,加密之后的32位密碼存儲在數據庫中。
文件訪問權限:因為在struts.xml文件中result對應的jsp文件,不是用來直接訪問的,而是用來做渲染的,所以這些jsp文件我放在了WEB-INF目錄下,而WEB-INF目錄是無法通過url直接訪問的,所以這樣也可以從一定程度提高網站的安全性。
數據庫安全性:將mysql數據庫中用戶名密碼設置為不允許遠程登入,并且給定的賬戶密碼只允許對該數據庫進行操作,而不是直接給定root的權限。
防止sql注入:在 組織sql語句的時候對輸入的數據進行嚴格的校驗,避免直接將輸入的數據作為sql的參數。通常使用的是Hibernate中setParameter參數綁定的形式。而且用了urlrewrite組件,除了考慮到SEO,美化url的作用外,還可以隱藏參數,避免被直接顯示出了。
基礎設施安全設計:安裝防火防病毒和殺毒軟件。設置防火墻,可以避免系統和信息受到非授權用戶的非授權程序的訪問;安裝殺毒軟件可以監控計算機中程序和進程的運行情況,及時發現和消滅病毒程序和進程,保護計算機系統和信息的安全。
5.總結
SSH是非常成熟的開發框架,其不僅開發快捷而且安全。該框架的系統從職責上分為三層:表示層、業務邏輯層、數據持久層,以幫助開發者在很短的時間內搭建結構清晰、可復用性好、維護方便的Web系統。基于SSH的網上人才招聘系統既幫助企業更加有效,快速的找到自己所需的人才,又為求職者提供了一個安全可靠的求職渠道。