【《基于java在線招聘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》10000字】_第1頁
【《基于java在線招聘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》10000字】_第2頁
【《基于java在線招聘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》10000字】_第3頁
【《基于java在線招聘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》10000字】_第4頁
【《基于java在線招聘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》10000字】_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

東北林業(yè)大學(xué)高等教育自學(xué)考試本科畢業(yè)設(shè)計(jì)(論文)相關(guān)技術(shù)原理和開發(fā)工具基于JavaWeb設(shè)計(jì)和編寫的網(wǎng)絡(luò)招聘系統(tǒng),需要使用動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)和數(shù)據(jù)庫完成創(chuàng)建。2.1程序語言的選擇2.1.1Java概述Java產(chǎn)生于1995年前后,是詹姆斯.高斯林用C語言編的,后來被Sun公司購買上市,Java是面向?qū)ο蟮?,所有東西都能變成對(duì)象,就是出于這樣的想法,為程序員打開思路,更高級(jí)的語言應(yīng)運(yùn)而生[5]。2.1.2Java特點(diǎn)Java語言用途很廣,具有跨平臺(tái)性。在不同java版本平臺(tái)上寫的java文件,經(jīng)過JVM虛擬機(jī)改造后,字節(jié)碼文件的最終作用是一樣的。從整體上看,Java正是適應(yīng)了迄今為止程序員們?cè)谛聲r(shí)代中不斷探索科技,順應(yīng)時(shí)代發(fā)展而產(chǎn)生出來的不得不用的語言。它不僅能夠?qū)崿F(xiàn)各種復(fù)雜而又龐大的程序功能,而且還具有非常高的效率。2.1.3Servlet概述Servlet在服務(wù)端運(yùn)行一個(gè)java小程序。繼承HttpServlet可在瀏覽器中獲取。其主要功能就是用于從瀏覽器接收數(shù)據(jù)并回到服務(wù)器進(jìn)行處理。Servlet實(shí)現(xiàn)生命周期主要有以下幾個(gè)方法:一是實(shí)例化對(duì)象init()方法:請(qǐng)求首次接入時(shí)實(shí)例化,是指該服務(wù)器首次接入后,servlet初始化后調(diào)用init方法,且僅調(diào)用1次。使用該方法可以減少服務(wù)器端計(jì)算量和提高系統(tǒng)性能。二是調(diào)用工作方法中的service()法:在每一個(gè)請(qǐng)求中調(diào)用這個(gè)方法,所述方法執(zhí)行獲得用戶請(qǐng)求的模式,通過用戶請(qǐng)求方式調(diào)用相對(duì)應(yīng)的doGet或者是doPost方法。三是銷毀destory()方法:當(dāng)容器檢測(cè)到一個(gè)Servlet實(shí)例應(yīng)該從服務(wù)中被移除的時(shí)候,容器就會(huì)調(diào)用實(shí)例的destroy()方法[6]。Java程序必須繼承HttpServlet,才能代表是一個(gè)Servlet類,程序必須重寫doGet(),doPost()方法,程序必須在web.xml中配置<servlet>,<servlet.mapping>(或者通過注解)。Serlvet運(yùn)行原理見圖2-1。圖2-1servlet原理圖2.2MySQL數(shù)據(jù)庫實(shí)際上,MySQL數(shù)據(jù)庫也是中小型級(jí)別,當(dāng)今許多中小型企業(yè)(只要不屬于國企,就可以算作中小型數(shù)據(jù)庫)都在使用MySQL數(shù)據(jù)庫,主要原因如下:第一,其是免費(fèi)的;第二,支持多種操作系統(tǒng)運(yùn)行;第三,效率較高。由于用戶進(jìn)入需要使用密碼登錄,所以一般都會(huì)用到加密方式來進(jìn)行安全保護(hù)。2.3開發(fā)工具2.3.1編碼工具IDEAIDEA全稱IntelliJIDEA,是目前最受開發(fā)者歡迎的java語言開發(fā)集成環(huán)境。能夠?qū)Υa進(jìn)行查審,對(duì)GUI進(jìn)行創(chuàng)新設(shè)計(jì)等,其作用可謂超出eclipse、Myeclipse等其他手段。IntelliJIDEA中的各個(gè)方面設(shè)計(jì)都旨在方便開發(fā)人員的使用,提高體驗(yàn)感[7]。用IntelliJIDEA對(duì)源代碼做索引后,其通過提供每一個(gè)語境下的相關(guān)推薦,來提供一種快捷和智能化的感受:IDEA可以瞬間而巧妙地完成編碼,動(dòng)態(tài)代碼分析與可靠重新構(gòu)建工具。2.3.2數(shù)據(jù)庫連接工具Navicat在Navicat中寫入的SQL語句沒有大小寫之分,無論書寫大寫或小寫,Navicat默認(rèn)為轉(zhuǎn)換為大寫字母,Navicat工具能夠連接汗各種數(shù)據(jù)庫而不局限于MySQL,也可與Oracle和其他數(shù)據(jù)庫聯(lián)系起來,實(shí)現(xiàn)安全和簡(jiǎn)便地創(chuàng)建。Navicat所具有的特性能夠滿足程序員的各種要求,而對(duì)初學(xué)數(shù)據(jù)庫服務(wù)器的人來說,這是一件頗為簡(jiǎn)單的事情。同時(shí),其還擁有非常完整的圖形用戶界面(GUI),也就是說,Navicat能夠以安全和簡(jiǎn)便的方式進(jìn)行創(chuàng)建,整理和存取。Navicat適用于以下三種系統(tǒng):一是MacOS;二是MicrosoftWindows;三是Linux系統(tǒng)。2.4開發(fā)環(huán)境筆記本電腦類型:華碩飛行堡壘64位型筆記本電腦電腦操作系統(tǒng):家庭版Windows10MySQL數(shù)據(jù)庫版本:MySQL57Java版本:JDK1.8Java版本:JDK1.8服務(wù)器版本型號(hào):apache.tomcat.8.5.37.windows.x643需求分析3.1系統(tǒng)功能分析本文通過結(jié)合如今招聘市場(chǎng)存在的不足以及求職招聘管理的需求搭建了更加信息化、系統(tǒng)化的線上求職招聘平臺(tái)。該平臺(tái)包含很多功能,能夠?qū)崿F(xiàn)用戶、企業(yè)以及管理者對(duì)應(yīng)的需求。本文接下來將會(huì)對(duì)幾個(gè)模塊分別進(jìn)行相應(yīng)的分析和研究。1.管理員/用戶登錄這部分模塊主要是用戶和管理者的登錄,其實(shí)也就是求職者和招聘者的登錄管理。包括添加管理者、用戶登錄、注冊(cè)等內(nèi)容。系統(tǒng)實(shí)現(xiàn)添加一般管理員和高級(jí)管理員的功能,同時(shí)也能夠保證游客注冊(cè)系統(tǒng)以及用戶登錄系統(tǒng)查詢信息等功能[8]。2.招聘者管理模塊:管理者能夠通過系統(tǒng)看到企業(yè)的招聘列表,然后其能將公司的相關(guān)信息在該板塊下進(jìn)行管理。3.管理職位類別:系統(tǒng)能夠顯示各種職位類別。4.信息推送模塊:管理員通過系統(tǒng)能夠清楚地看到招聘信息的推送,且能通過關(guān)鍵字的方式查詢相關(guān)推送。并對(duì)信息進(jìn)行審核,若信息失效,則需要?jiǎng)h除信息。5.留言板管理員擁有管理留言板的權(quán)限,主要是完成相關(guān)留言的更改操作,包括增加、刪除等。6.用戶操作:這部分是系統(tǒng)普通用戶能夠進(jìn)行的基本操作,也是本文設(shè)計(jì)的系統(tǒng)最基本的功能,也就是實(shí)現(xiàn)基本的登錄使用、信息查詢、信息修改以及數(shù)據(jù)存儲(chǔ)等功能。7.退出:這個(gè)模塊主要是相關(guān)人員不使用系統(tǒng)時(shí)退出系統(tǒng),包括用戶、管理員等。網(wǎng)絡(luò)人才招聘系統(tǒng)的設(shè)計(jì)主要有三大類:第一類為個(gè)人用戶,第二類為企業(yè)用戶,第三類為管理員用戶,筆者將在下文中逐一描述這三個(gè)大類系統(tǒng)的腦圖與思想架構(gòu)。個(gè)人用戶的功能簡(jiǎn)介見圖3-1:圖3-1個(gè)人用戶圖企業(yè)用戶功能介紹如圖3-2所示:如圖3-2企業(yè)用戶圖管理員用戶功能介紹如圖3-3所示:圖3-3管理員用戶圖3.2業(yè)務(wù)流程分析系統(tǒng)的業(yè)務(wù)流程如下圖所示。圖3-4系統(tǒng)業(yè)務(wù)流程圖其中業(yè)務(wù)的關(guān)鍵流程:在前臺(tái)賬號(hào)的頁面,以個(gè)人用戶信息作為驗(yàn)證,途經(jīng)服務(wù)器之中的數(shù)據(jù)庫校驗(yàn),如果何時(shí)用戶信息中的賬號(hào)密碼正確,就可以對(duì)這個(gè)系統(tǒng)進(jìn)行使用,而在后端賬號(hào)界面輸入管理員的個(gè)人信息,經(jīng)由服務(wù)器之中的數(shù)據(jù)校驗(yàn),能夠?qū)ο到y(tǒng)進(jìn)行管理,管理系統(tǒng)等功能操作[9]。3.3需求分析3.3.1業(yè)務(wù)需求分析網(wǎng)上求職與招聘管理系統(tǒng)的發(fā)展從根本上改變了我們的求職與招聘模式,這與經(jīng)濟(jì)和科技的快速發(fā)展也是分不開的。與此同時(shí),該系統(tǒng)主要是為了方便求職者和招聘者間的聯(lián)系。解決求職和招聘過程中存在的不足,確保通過線上就能夠完成招聘工作。首先,招聘單位通過系統(tǒng)發(fā)布招聘信息,并且維護(hù)招聘信息,求職者在通過系統(tǒng)找到符合自己需求的工作,提交相關(guān)的資料[10]。接下來企業(yè)在系統(tǒng)上安排的用戶就會(huì)專門負(fù)責(zé)處理相關(guān)的內(nèi)容,將應(yīng)聘信息下載并挑選后,通知符合企業(yè)工作崗位的應(yīng)聘者參加面試。在面試過程中,人力資源能夠通過系統(tǒng)隨時(shí)查看應(yīng)聘者的簡(jiǎn)歷。本文設(shè)計(jì)的網(wǎng)上求職與招聘系統(tǒng)的設(shè)計(jì)開發(fā),主要是是基于Java技術(shù)的研究。該系統(tǒng)能夠通過計(jì)算機(jī)技術(shù)實(shí)現(xiàn)招聘者和求職者的管理。確保整個(gè)過程能夠?qū)崿F(xiàn)網(wǎng)絡(luò)化、信息化、高效化。這種線上求職招聘的方式與傳統(tǒng)的線下方式相比,可以節(jié)約很多資源,同時(shí)也能夠提高辦事效率。此外,一旦這種系統(tǒng)開發(fā)完成并且投入使用后,能夠通過大量的數(shù)據(jù)將整個(gè)系統(tǒng)做到更加細(xì)致化的管理,不僅有利于信息的查詢,也能夠帶來很好的便捷性。3.3.2系統(tǒng)功能分析本文通過結(jié)合如今招聘市場(chǎng)存在的不足以及求職招聘管理的需求搭建了更加信息化、系統(tǒng)化的線上求職招聘平臺(tái)。該平臺(tái)包含很多功能,能夠?qū)崿F(xiàn)用戶、企業(yè)以及管理者對(duì)應(yīng)的需求。本文接下來將會(huì)對(duì)幾個(gè)模塊分別進(jìn)行相應(yīng)的分析和研究[11]。1.管理員/用戶登錄這部分模塊主要是用戶和管理者的登錄,其實(shí)也就是求職者和招聘者的登錄管理。包括添加管理者、用戶登錄、注冊(cè)等內(nèi)容。系統(tǒng)實(shí)現(xiàn)添加一般管理員和高級(jí)管理員的功能,同時(shí)也能夠保證游客注冊(cè)系統(tǒng)以及用戶登錄系統(tǒng)查詢信息等功能。2.招聘者管理模塊:管理者能夠通過系統(tǒng)看到企業(yè)的招聘列表,然后其能將公司的相關(guān)信息在該板塊下進(jìn)行管理。3.管理職位類別:系統(tǒng)能夠顯示各種職位類別。4.信息推送模塊:管理員通過系統(tǒng)能夠清楚地看到招聘信息的推送,且能通過關(guān)鍵字的方式查詢相關(guān)推送。并對(duì)信息進(jìn)行審核,若信息失效,則需要?jiǎng)h除信息[12]。5.留言板管理員擁有管理留言板的權(quán)限,主要是完成相關(guān)留言的更改操作,包括增加、刪除等。6.用戶操作:這部分是系統(tǒng)普通用戶能夠進(jìn)行的基本操作,也是本文設(shè)計(jì)的系統(tǒng)最基本的功能,也就是實(shí)現(xiàn)基本的登錄使用、信息查詢、信息修改以及數(shù)據(jù)存儲(chǔ)等功能。7.退出:這個(gè)模塊主要是相關(guān)人員不使用系統(tǒng)時(shí)退出系統(tǒng),包括用戶、管理員等。3.3.3數(shù)據(jù)流圖個(gè)人用戶流程圖如圖3-5:圖3-5個(gè)人數(shù)據(jù)流程圖解析:個(gè)人用戶需要先訪問登錄頁面,擁有賬號(hào)可直接登陸,如無賬號(hào)可使用郵箱地址進(jìn)行注冊(cè),進(jìn)入系統(tǒng)后,需要填寫填履歷,可向公布招聘信息的公司投送簡(jiǎn)歷,可對(duì)簡(jiǎn)歷進(jìn)行修改;運(yùn)行結(jié)束后,單機(jī)退出登錄按鈕即可,將其賬號(hào)信息安全撤除[13]。企業(yè)用戶流程圖見圖3-6:圖3-6企業(yè)數(shù)據(jù)流程圖解析:企業(yè)用戶與個(gè)人用戶的注冊(cè)登錄過程一樣,設(shè)有賬號(hào)的可直接登陸,無賬號(hào)的需郵箱注冊(cè)登錄;如果是企業(yè)用戶,則需要登陸到服務(wù)器后才能進(jìn)行操作。系統(tǒng)內(nèi)可公布錄用崗位,查看應(yīng)聘者的簡(jiǎn)歷,向應(yīng)聘者下達(dá)面試通知;運(yùn)行結(jié)束后,可通過單擊退出登錄按鈕,安全退出。4系統(tǒng)設(shè)計(jì)4.1系統(tǒng)整體設(shè)計(jì)思想該系統(tǒng)的總體設(shè)計(jì)思想如下:第一,在Windows系統(tǒng)環(huán)境及B/S(瀏覽器/服務(wù)器)體系結(jié)構(gòu)中進(jìn)行開發(fā);第二,后臺(tái)開發(fā)主要使用Java語言,開發(fā)主要功能。第三,前臺(tái)開發(fā),使用HTML+CSS+JS技術(shù)。第四,數(shù)據(jù)使用MySQL數(shù)據(jù)庫,完成語言建庫、建表等系列操作。4.2系統(tǒng)體系架構(gòu)網(wǎng)絡(luò)招聘系統(tǒng)使用了三層架構(gòu)這一技術(shù),將整個(gè)系統(tǒng)分割開來,其優(yōu)點(diǎn)可分兩點(diǎn):一方面,它能使整個(gè)程序的功能清晰化、結(jié)構(gòu)清晰化,由此使得程序員在各個(gè)功能模塊上的針對(duì)性都有了很大提高,增加發(fā)展的效益。另一方面,它還增加了系統(tǒng)后期可維護(hù)性(維護(hù)服務(wù)器是否高效)與可擴(kuò)展性(后期可以增加功能)[14]。另外,在實(shí)現(xiàn)過程中還需要解決一些具體的細(xì)節(jié),該系統(tǒng)三層架構(gòu)劃分見圖4-1:圖4-1三層架構(gòu)表現(xiàn)層:基于jsp與servlet技術(shù),借助servlet對(duì)個(gè)人用戶與企業(yè)用戶申請(qǐng)不同方式與對(duì)象,接收不同請(qǐng)求,利用業(yè)務(wù)邏輯功能,將數(shù)據(jù)發(fā)送到j(luò)sp病呈現(xiàn)給用戶。邏輯層:實(shí)際上,業(yè)務(wù)邏輯層以service為主,它的作用是利用數(shù)據(jù)層所獲取的信息,在功能模塊圖上實(shí)現(xiàn)了多種業(yè)務(wù)邏輯。數(shù)據(jù)層:從體系上看,數(shù)據(jù)持久層以dao為主,dao層利用JDBC技術(shù)對(duì)MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)鏈接與存取。三層中的關(guān)系是自上而下的,各層之間需相互依賴。4.3數(shù)據(jù)庫表設(shè)計(jì)個(gè)人數(shù)據(jù)表設(shè)計(jì)如表4-1所示:表4-1個(gè)人表字段名數(shù)據(jù)類型長(zhǎng)度約束描述idbigint20主鍵序號(hào)create_timedatetime0不為null創(chuàng)建時(shí)間update_timedatetime0不為null修改時(shí)間emailvarchar255不為null郵箱地址passwordvarchar16不為null密碼head_picvarchar128不為null頭像mobilevarchar11不為null手機(jī)號(hào)sexint11不為null性別usernamevarchar6不為null姓名contentlongtext0自我描述work_experiencevarchar10工作時(shí)長(zhǎng)degreevarchar10學(xué)歷所述個(gè)人表用于存儲(chǔ)個(gè)人賬號(hào)用戶基本信息,用戶在注冊(cè)或登錄時(shí)所錄入數(shù)據(jù)的存儲(chǔ)場(chǎng)所為個(gè)人表。其中ID字段是表中主鍵,主鍵不重復(fù),不為空鍵,是每一個(gè)用戶身份唯一的象征。該部分包含了所有的字段值和對(duì)應(yīng)的屬性。還有一些字段保存的信息為個(gè)人用戶基本信息。企業(yè)數(shù)據(jù)表設(shè)計(jì)如表4-2所示:表4-2企業(yè)表字段名數(shù)據(jù)類型長(zhǎng)度約束描述idbigint20主鍵序號(hào)create_timedatetime0不為null創(chuàng)建時(shí)間update_timedatetime0不為null修改時(shí)間financevarchar255不為null是否上市founder_namevarchar10不為null創(chuàng)始人founder_photovarchar128不為null創(chuàng)始人照片founder_positionvarchar11不為null職位introductionlongtext0不為null公司簡(jiǎn)介localevarchar255不為null公司地址namevarchar30公司名稱product_contentlongtext0產(chǎn)品描述product_titlevarchar15職位名稱scalevarchar255公司人數(shù)statevarchar30管理認(rèn)證territoryvarchar255行業(yè)urlvarchar255官網(wǎng)網(wǎng)址valuevarchar50職位簡(jiǎn)介企業(yè)表旨在保存企業(yè)賬號(hào)的用戶信息(企業(yè)名稱等)。在該表中,所有的字段值都可以從數(shù)據(jù)庫中提取出來,并可根據(jù)需要進(jìn)行修改和刪除,因此它具有很高的實(shí)用價(jià)值。其中ID字段同時(shí)作為表中主鍵使用,主鍵不重復(fù),不為空鍵,是每一個(gè)企業(yè)用戶唯一的身份象征。4.4招聘智能預(yù)測(cè)模塊數(shù)據(jù)處理是可視化分析的重要前提,在使用Python進(jìn)行數(shù)據(jù)分析時(shí),如果直接連接數(shù)據(jù)庫,那么所需的模塊將直接導(dǎo)入Python進(jìn)行分析。但是,如果直接用于可視化分析,原始數(shù)據(jù)存在重復(fù)、缺乏、不完整、不一致和噪聲等問題,可能會(huì)對(duì)后續(xù)分析結(jié)果產(chǎn)生重大影響。因此,利用Python的Pandas庫將數(shù)據(jù)庫中包含的數(shù)據(jù)納入DataFrames中,進(jìn)行數(shù)據(jù)清理和隨后的可視化分析[15]。圖4-2是數(shù)據(jù)預(yù)處理的流程圖。圖4-2數(shù)據(jù)預(yù)處理流程圖以下是對(duì)招聘信息進(jìn)行非結(jié)構(gòu)文本進(jìn)行數(shù)據(jù)分析,圖4-3是文本分析流程圖。圖4-3文本數(shù)據(jù)分析流程圖4.5招聘智能預(yù)測(cè)模塊實(shí)現(xiàn)用戶立足七大機(jī)器學(xué)習(xí)算法預(yù)測(cè)模型實(shí)現(xiàn)預(yù)估薪資的操作,如下是基于KNN算法進(jìn)行舉例。首先導(dǎo)入sklearn模塊中的KNN類,再通過創(chuàng)建分類器對(duì)象調(diào)用其訓(xùn)練方法接收訓(xùn)練數(shù)據(jù)集及其樣本標(biāo)簽,最終生成預(yù)測(cè)模型,KNN預(yù)測(cè)模型生成代碼如圖4-4所示:圖4-4KNN預(yù)測(cè)模型圖4-5呈現(xiàn)的內(nèi)容是預(yù)測(cè)結(jié)果圖,由圖中信息能夠明確,在上海python開發(fā),應(yīng)屆畢業(yè)生能獲得的薪資不高于1萬元。圖4-5KNN預(yù)測(cè)結(jié)果圖邏輯回歸預(yù)測(cè)模型生成代碼如圖4-6所示:圖4-6邏輯回歸預(yù)測(cè)模型樸素貝葉斯預(yù)測(cè)模型生成代碼如圖4-7所示:圖4-7樸素貝葉斯預(yù)測(cè)模型隨機(jī)森林預(yù)測(cè)模型生成代碼如圖4-8所示:圖4-8隨機(jī)森林預(yù)測(cè)模型決策樹預(yù)測(cè)模型生成代碼如圖4-9所示:圖4-9決策樹預(yù)測(cè)模型支持向量機(jī)預(yù)測(cè)模型生成代碼如圖4-10所示:圖4-10支持向量機(jī)預(yù)測(cè)模型神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型生成代碼如圖4-11所示:圖4-11神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型用戶可擬定城市、學(xué)歷、工作經(jīng)驗(yàn)、公司規(guī)模、職位來獲得信息預(yù)測(cè)模型,圖4-12呈現(xiàn)的內(nèi)容就是預(yù)測(cè)結(jié)果在前端系統(tǒng)呈現(xiàn)的核心程序代碼:圖4-12后臺(tái)生成薪資預(yù)測(cè)值5系統(tǒng)實(shí)現(xiàn)5.1登錄模塊登錄模塊,用戶可借助文本框,輸入登錄信息,使用Servlet導(dǎo)入dao層,對(duì)其正確性進(jìn)行判斷,明確登錄模式,跳過對(duì)應(yīng)網(wǎng)頁。系統(tǒng)所有功能均須以用戶登陸成功為硬件前提,實(shí)現(xiàn)頁面跳轉(zhuǎn),因此,本單元顯得尤為重要。用戶根據(jù)網(wǎng)頁文本框提示,鍵入信箱、密碼及驗(yàn)證碼單擊登陸,系統(tǒng)將對(duì)輸入郵箱進(jìn)行檢索,密碼與驗(yàn)證碼是否正確以及是否為空白,若輸入數(shù)據(jù)存在于用戶表中,系統(tǒng)跳過相應(yīng)界面圖示,否則,將提示郵箱和密碼有誤,或驗(yàn)證碼有誤;如果沒有這些提示就會(huì)提示注冊(cè)成功。用戶這個(gè)要重新輸入合適的郵箱及密碼,不然就會(huì)提示登陸不成功。登錄模塊主要代碼為:publicResult<Boolean>loginForm(Stringemail,Stringpassword,Stringcpacha,HttpServletRequestrequest){if(StringUtil.isEmpty(email)){returnResult.error(CodeMsg.USER_EMAIL_EMPTY);}if(StringUtil.isEmpty(password)){returnResult.error(CodeMsg.USER_PASSWORD_EMPTY);}if(StringUtil.isEmpty(cpacha)){returnResult.error(CodeMsg.CPACHA_EMPTY);}//獲取系統(tǒng)生成的驗(yàn)證碼Stringcorrect_cpacha=(String)request.getSession().getAttribute("user_login");//驗(yàn)證驗(yàn)證碼是否正確if(!cpacha.toUpperCase().equals(correct_cpacha.toUpperCase())){returnResult.error(CodeMsg.CPACHA_ERROR);}Useruser=userService.findByEmail(email);//判斷該郵箱地址是否存在if(user==null){returnResult.error(CodeMsg.USER_EMAIL_NOT_EXIST);}//判斷用戶輸入密碼是否正確if(!password.equals(user.getPassword())){returnResult.error(CodeMsg.USER_PASSWORD_ERROR);}request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY,user);returnResult.success(true);}登錄界面如圖5-1圖5-1登錄頁面5.2注冊(cè)模塊使用者可到登記頁面登記賬號(hào)及密碼,登記的資料必須按要求填寫。登陸之后,系統(tǒng)將自動(dòng)發(fā)送一個(gè)注冊(cè)驗(yàn)證碼,輸入自己想要注冊(cè)的帳號(hào)、密碼以及所需的個(gè)人信息。當(dāng)注冊(cè)信息被填入時(shí),系統(tǒng)將對(duì)所填入信息進(jìn)行檢測(cè),以證明其合法性,當(dāng)輸入正確之后,系統(tǒng)會(huì)自動(dòng)給提供一個(gè)安全登陸界面,該界面包括登陸入口、賬戶設(shè)置等多個(gè)模塊。注冊(cè)后,點(diǎn)擊回傳登陸,就可以用剛注冊(cè)好的賬號(hào)及密碼登錄到系統(tǒng)中。5.2.1注冊(cè)模塊的關(guān)鍵代碼如下:publicResult<Boolean>registerForm(HttpServletRequestrequest,Useruser,Stringcpacha){//如果勾選目的為空if(user.getType()==null||user.getType()<0){returnResult.error(CodeMsg.USER_REGISTER_TYPE_EMPTY);}//如果郵箱地址為空if(StringUtil.isEmpty(user.getEmail())){returnResult.error(CodeMsg.USER_EMAIL_EMPTY);}//如果用戶密碼為空if(StringUtil.isEmpty(user.getPassword())){returnResult.error(CodeMsg.USER_PASSWORD_EMPTY);}//如果用戶昵稱為空if(StringUtil.isEmpty(user.getUsername())){returnResult.error(CodeMsg.USER_NAME_EMPTY);}//如果驗(yàn)證碼為空if(StringUtil.isEmpty(cpacha)){returnResult.error(CodeMsg.CPACHA_EMPTY);}//用統(tǒng)一驗(yàn)證實(shí)體方法驗(yàn)證是否合法user.setMobile();//先隨便設(shè)置一個(gè),后面恢復(fù)CodeMsgvalidate=ValidateEntityUtil.validate(user);if(validate.getCode()!=CodeMsg.SUCCESS.getCode()){returnResult.error(validate);}user.setMobile(null);//恢復(fù)//如果用戶沒點(diǎn)發(fā)送郵件if(request.getSession().getAttribute("user_register")==null){returnResult.error(CodeMsg.SYSTEM_CPACHA_EMPTY);}Stringcorrect_cpacha=(String) request.getSession().getAttribute("user_register");//如果驗(yàn)證碼不正確if(!correct_cpacha.toUpperCase().equals(cpacha.toUpperCase())){returnResult.error(CodeMsg.CPACHA_ERROR);}//檢查郵箱和用戶昵稱是否有重復(fù)if(checkEmail(user,0l)){request.getSession().setAttribute("user_register",null);//郵箱輸入新的一個(gè),需要重新發(fā)驗(yàn)證碼確定returnResult.error(CodeMsg.USER_EMAIL_ALREADY_EXIST);}if(checkUsername(user,0l)){returnResult.error(CodeMsg.USER_NAME_ALREADY_EXIST);}//上面審核都通過后,準(zhǔn)備添加數(shù)據(jù)庫if(userService.save(user)==null){returnResult.error(CodeMsg.USER_REGISTER_ERROR);}//把驗(yàn)證碼權(quán)限銷毀request.getSession().setAttribute("user_register",null);returnResult.success(true);}//檢查有沒有重復(fù)的emailpublicbooleancheckEmail(Useruser,Longid){UserfindByEmail=userService.findByEmail(user.getEmail());if(findByEmail==null)returnfalse;//沒有重復(fù)if(findByEmail.getId().longValue()==id.longValue())returnfalse;//沒有重復(fù)returntrue;//有重復(fù)}//檢查有沒有重復(fù)的usernamepublicbooleancheckUsername(Useruser,Longid){UserfindByUsername=userService.findByUsername(user.getUsername());if(findByUsername==null)returnfalse;//沒有重復(fù)if(findByUsername.getId().longValue()==id.longValue())returnfalse;//沒有重復(fù)returntrue;//有重復(fù)}}注冊(cè)界面如圖5-2:圖5-2注冊(cè)頁面5.3簡(jiǎn)歷管理模塊個(gè)人用戶可對(duì)簡(jiǎn)歷進(jìn)行撰寫及修改,簡(jiǎn)歷分基本信息模塊、期望的工作模塊、工作經(jīng)歷模塊、項(xiàng)目經(jīng)驗(yàn)?zāi)K和其他一些模塊。本模塊為用戶必填項(xiàng)目,未填簡(jiǎn)歷保存失敗。代碼實(shí)例:publicclassUserextendsBaseEntity{/****/privatestaticfinallongserialVersionUID=1L;privatestaticfinalintUSER_SEX_MAN=1;//性別男privatestaticfinalintUSER_SEX_WOMAN=2;//性別女privatestaticfinalintUSER_SEX_UNKONW=0;//性別未知privatestaticfinalStringDEFAULT_WORK_EXPERIENCE="應(yīng)屆畢業(yè)生";//默認(rèn)工作經(jīng)驗(yàn)privatestaticfinalStringDEFAULT_DEGREE="其他";//默認(rèn)學(xué)歷privatestaticfinalStringDEFAULT_HEAD_IMAGE="common/default_img.jpg";//默認(rèn)用戶頭像@ValidateEntity(required=true,requiredMaxLength=true,requiredMinLength=true,minLength=1,maxLength=6,errorRequiredMsg="用戶昵稱不能為空!",errorMinLengthMsg="用戶昵稱長(zhǎng)度需大于0!",errorMaxLengthMsg="用戶昵稱長(zhǎng)度不能大于6!")@Column(name="username",nullable=false,length=6)privateStringusername;//用戶昵稱@ValidateEntity(required=true,requiredMaxLength=true,requiredMinLength=true,minLength=6,maxLength=16,errorRequiredMsg="用戶密碼不能為空!",errorMinLengthMsg="用戶密碼長(zhǎng)度需大于5!",errorMaxLengthMsg="用戶密碼長(zhǎng)度不能大于16!")@Column(name="Password",nullable=false,length=16)privateStringPassword;//用戶昵稱@ValidateEntity(required=true,errorRequiredMsg="用戶郵箱地址不能為空!")@Column(name="Email",nullable=false)privateStringEmail;//用戶郵箱地址@ValidateEntity(required=false)@Column(name="head_pic",length=128)privateStringheadPic=DEFAULT_HEAD_IMAGE;//用戶頭像@ValidateEntity(required=false)@Column(name="work_experience",length=10)privateStringworkExperience=DEFAULT_WORK_EXPERIENCE;//工作經(jīng)驗(yàn):默認(rèn)是應(yīng)屆畢業(yè)生@ValidateEntity(required=false)@Column(name="degree",length=10)privateStringdegree=DEFAULT_DEGREE;//學(xué)歷:默認(rèn)是其他@ValidateEntity(required=false)@Column(name="sex",length=1)privateintsex=USER_SEX_UNKONW;//用戶性別@ValidateEntity(required=true,requiredMaxLength=true,requiredMinLength=true,minLength=11,maxLength=11,errorMinLengthMsg="請(qǐng)輸入手機(jī)號(hào)正確的11位長(zhǎng)度!",errorMaxLengthMsg="請(qǐng)輸入手機(jī)號(hào)正確的11位長(zhǎng)度!")@Column(name="mobile",length=12)privateStringmobile;//用戶手機(jī)號(hào)@ValidateEntity(required=false)@Column(name="type",length=1,nullable=false)privateLongtype;//用戶類別:0:應(yīng)聘者,1:招聘者@Lob@Basic(fetch=FetchType.LAZY)//類型為longtextprivateStringcontent;//自我描述基本信息模塊如圖5-3:圖5-3簡(jiǎn)歷基本信息模塊5.4招聘者管理模塊企業(yè)用戶可隨時(shí)查看有無申請(qǐng)人申請(qǐng)本企業(yè)公布的崗位,可瀏覽其所投簡(jiǎn)歷,以確定是否有必要告知其進(jìn)行面試。當(dāng)通知面試時(shí),系統(tǒng)會(huì)自動(dòng)將簡(jiǎn)歷和錄用人員進(jìn)行關(guān)聯(lián),并在通知面試之前提醒應(yīng)聘者注意。告知面試結(jié)束后希望相應(yīng)投簡(jiǎn)歷的求職者,將獲得該公司的面試消息。招聘者管理模塊的關(guān)鍵代碼如下:/***招聘者收到簡(jiǎn)歷頁面*@parammodel*@return*/@RequestMapping(value="/my_receive_resume",method=RequestMethod.GET)publicStringmy_receive_resume(Modelmodel,StringresumeState,HttpServletRequestrequest){Useruser=(User)request.getSession().getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);if(!StringUtil.isEmpty(resumeState)){//如果resumeState不為空CompanyfindCompanyByUserId=companyService.findByUserId(user.getId());List<Resume>findByCompanyIdAndState=resumeService.findByCompanyIdAndState(findCompanyByUserId.getId(),resumeState);model.addAttribute("ResumeList",findByCompanyIdAndState);model.addAttribute("EducationBackgroundList",educationBackgroundService.findAllEducationBackground());model.addAttribute("WorkExperienceList",workExperienceService.findAllWorkExperience());model.addAttribute("resumeTotal",resumeService.getPositionTotalByStateAndCompanyId(findCompanyByUserId.getId(),resumeState));model.addAttribute("resumeState",resumeState);}else{CompanyfindCompanyByUserId=companyService.findByUserId(user.getId());List<Resume>findByCompanyIdAndState=resumeService.findByCompanyIdAndState(findCompanyByUserId.getId(),"wait");model.addAttribute("ResumeList",findByCompanyIdAndState);model.addAttribute("EducationBackgroundList",educationBackgroundService.findAllEducationBackground());model.addAttribute("WorkExperienceList",workExperienceService.findAllWorkExperience());model.addAttribute("resumeTotal",resumeService.getPositionTotalByStateAndCompanyId(findCompanyByUserId.getId(),"wait"));}return"home/resume/my_receive_resume";}/***簡(jiǎn)歷通知面試*@paramrequest*@return*/@RequestMapping(value="/interview",method=RequestMethod.POST)@ResponseBodypublicResult<Boolean>interview(HttpServletRequestrequest,@RequestParam(name="id",required=true)Longid){ResumefindByResumeId=resumeService.findByResumeId(id);findByResumeId.setState("effective");if(resumeService.save(findByResumeId)==null){returnResult.error(CodeMsg.RESUME_STATE_SAVE_ERROR);}returnResult.success(true);}通知面試如圖5-4:圖5-4通知面試圖5.5退出登錄模塊運(yùn)行結(jié)束時(shí),用戶可將鼠標(biāo)光標(biāo)置于右上角退出圖標(biāo)上,單擊退出按鈕,安全退出系統(tǒng),單擊完成退出按鈕之后,系統(tǒng)會(huì)直接返回登錄頁面。本系統(tǒng)通過對(duì)各種不同類型的攻擊手段及相應(yīng)的防范策略,有效地阻止了各類攻擊方式的實(shí)施,確保了用戶在任何時(shí)候都能正常登陸,并實(shí)現(xiàn)了與其它網(wǎng)站的數(shù)據(jù)連接。杜絕他人利用其賬號(hào)從事某些非法行為,保障用戶信息安全,同時(shí)確保網(wǎng)絡(luò)環(huán)境安全。詳見圖5-5:圖5.5安全退出登錄圖6系統(tǒng)測(cè)試因?yàn)檐浖⒎菍?shí)物產(chǎn)品,它是一種無形的邏輯產(chǎn)品,因此,設(shè)計(jì)中會(huì)出現(xiàn)一些難以避免的錯(cuò)誤。因此,需要檢查編寫的代碼是否正確可用,檢驗(yàn)系統(tǒng)的運(yùn)行,發(fā)現(xiàn)可能出現(xiàn)的錯(cuò)誤與BUG,及時(shí)進(jìn)行調(diào)試修正錯(cuò)誤。6.1測(cè)試方法通常來說,系統(tǒng)測(cè)試主要分為以下兩種:一是靜態(tài)測(cè)試;二是動(dòng)態(tài)測(cè)試。靜態(tài)測(cè)試是到寫好的代碼里檢查并發(fā)現(xiàn)錯(cuò)誤,該測(cè)試方式無須運(yùn)行程序,但需要注意的是,該測(cè)試方法很難發(fā)現(xiàn)錯(cuò)誤,并且工作量過大,且效率不高。動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試則相反,要求程序運(yùn)行到電腦,運(yùn)行時(shí)檢測(cè)BUG及主要失誤。動(dòng)態(tài)測(cè)試尋找BUG,能直觀地檢測(cè)出錯(cuò)誤,因此,目前多數(shù)程序員都在使用動(dòng)態(tài)測(cè)試方法。而動(dòng)態(tài)測(cè)試主要分為以下兩種:第一,白盒測(cè)試;第二,黑盒測(cè)試。我們編寫的系統(tǒng)使用了動(dòng)態(tài)系統(tǒng)黑盒測(cè)試等價(jià)分割方法。6.2測(cè)試環(huán)境電腦型號(hào):華碩飛行堡壘操作系統(tǒng):Windows10家庭版數(shù)據(jù)庫版本:MySQL57JDK版本:JDK1.8JDK版本:JDK1.8服務(wù)器版本:apache.tomcat.8.5.37.windows.x64瀏覽器版本:Google6.3測(cè)試結(jié)果該系統(tǒng)前臺(tái)借助相關(guān)技術(shù),判斷用戶所錄入數(shù)據(jù)是否合理和合法。后臺(tái)則需要利用這些信息來完成相應(yīng)操作。例如:賬號(hào)的郵箱限制、密碼長(zhǎng)度有限、單個(gè)選項(xiàng)的輸入不可能是空的等。這些都可以作為一個(gè)獨(dú)立的模塊加入到后臺(tái)數(shù)據(jù)庫中去實(shí)現(xiàn),從而使得整個(gè)系統(tǒng)具有一定的獨(dú)立性和可擴(kuò)展性。以下是幾個(gè)等價(jià)類的劃分及測(cè)試結(jié)果。用戶注冊(cè)信息測(cè)試中一些等價(jià)類的分割見表6-1:表6-1“個(gè)人用戶注冊(cè)”輸入條件的等價(jià)類表輸入條件有效等價(jià)類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論