人才招聘网站
馬上要找實習了,這段時間一直在復習鞏固以前學習的東西,前段時間抽空那一個“人才招聘網站”復習了一下struts2的基礎知識,這里我把實現邏輯貼出來,一方面希望能幫到需要的人,另一方面方便自己在以后做類似網站的時候可以做一個對比:
數據庫表:
userInfo(id,username,password)用戶賬戶信息
userbaseinfo(id,username,realname,sex,birthday,marry,degree,telephone,email,skill,description,waddress,wjobtype,wsalary,resumephoto)用戶基本信息
company(id,username,password,email)企業賬戶信息
companybaseinfo(id,username,comfullname,comtype,bill,comdescription,empcount,comaddress,email,comtelephone,manager,mantel,website,comimage)企業基本信息
companyemployinfo(jobid,username,jobname,comfullname,comaddress,jobwpersoncount,jobstatus,degree,language,salary,startdate,enddate,jobdescription)企業發布的職位信息
userresume(id,jobname,comfullname,username[普通用戶注冊時的用戶名])用戶簡歷的投遞情況
實現邏輯:
普通用戶的功能實現
1、普通用戶登錄(user-login.jsp):填寫用戶名和密碼之后提交給loginPerson.action(LoginAction.java),如果是普通用戶登錄則跳轉到用戶個人主頁(userPage.jsp),如果是管理員登錄,則跳轉到管理員主頁(admin.jsp);
2、普通用戶注冊(user-register.jsp):注冊時只需要填寫用戶名和密碼,提交給userRegist.action(UserRegistAction.java)進行注冊,完成注冊后跳轉到注冊成功頁面(user-register-success.jsp),在該頁面進一步完善用戶個人信息;
3、完善用戶個人信息(user-register-success.jsp):填寫個人基本信息之后提交給userRegistAfter.action(UserRegistAfterAction.java)進行持久化操作,之后跳轉到用戶個人主頁(userPage.jsp);
4、用戶個人主頁(userPage.jsp)有5個主要功能:
4.1、查看簡歷(userResume.jsp,刪除和增加簡歷):點擊查看簡歷,調用selectUserResume.action(SelectUserResumeAction.java)從數據庫中查回相應的簡歷進行展示;
4.2、增加簡歷(user-register-success.jsp);
4.3、刪除簡歷(點擊“刪除簡歷”調用deleteResume.action(DeleteResumeAction),然后跳轉到增加簡歷的頁面,并且增加一句話“簡歷刪除成功”(這句話怎么增加?在相應的action中加一個有getter和setter方法的屬性,然后給它賦值一句話,之后在頁面中直接獲取就行了);
4.4、瀏覽招聘信息:點擊“瀏覽招聘信息”調用selectAllEmployInfo.action(SelectAllEmployInfoAction.java),該action調用業務層方法查回所有的招聘信息,然后跳轉到allEmployInfo.jsp進行顯示;
4.5、投遞簡歷(putResume.jsp):在該頁面只需要輸入工作名稱和要投遞的公司全名提交給putResumetoComapny.action(PutResumetoComapnyAction.java),在該action中調用業務層方法將工作名稱、公司全名和公司注冊時的username一同插入數數據庫表userresume,之后返回用戶個人主頁,顯示投遞成功;
4.6、退出系統(index.jsp)
企業用戶的功能實現
5、企業登錄(company-login.jsp):填寫用戶名和密碼之后提交給loginCompany.action(LoginCompanyAction.java),然后跳轉到企業主頁(companyPage.jsp)
6、企業注冊(company-register.jsp):注冊時只需要填寫用戶名、密碼和郵箱,提交給companyRegist.action(CompanyRegistAction.java)進行注冊,完成注冊后跳轉到注冊成功頁面(company-register-success.jsp),在該頁面進一步完善企業信息;
7、完善企業信息(company-register-success.jsp):填寫企業信息之后提交給companyRegistAfter.action(CompanyRegistAfterAction.java)進行持久化操作,之后跳轉到完善企業招聘信息(company-register-employ.jsp),在該頁面完善企業的招聘信息;
8、完善企業的招聘信息(company-register-employ.jsp):填寫企業招聘信息之后提交給companyRegistEmploy.action(CompanyRegistEmployAction.java)進行持久化操作,之后跳轉到企業主頁(companyPage.jsp);
8、企業主頁(userPage.jsp)有三個主要功能:
8.1、查看本企業的招聘信息(companyEmployInfo.jsp,刪除和增加本企業的招聘信息)點擊查看本企業的招聘信息,調用selectCompanyEmployInfo.action(SelectCompanyEmployInfoAction.java)從數據庫中查回相應的簡歷展示到companyEmployInfo.jsp;
8.2、刪除本企業的招聘信息(deleteCompanyEmployInfo.jsp),在該頁面中輸入要刪除的招聘信息的工作名稱,然后提交給deleteCompanyEmployInfo.action(DeleteCompanyEmployInfoAction.java),該action調用業務層方法,通過工作名稱和公司注冊時用的名稱(從session中獲取該公司名稱)來刪除該條招聘信息;
8.3、增加本企業的招聘信息(company-register-employ.jsp)
8.4、瀏覽用戶投的簡歷:點擊“瀏覽用戶投的簡歷”調用一個lookupUserResume.action
(LookupUserResumeAction,java),在該acion中獲取該公司的username,調用業務層方法通過企業的username從companybaseinfo表中查回該username對應的comfullname,再通過該comfullname從userresume表中查回相應的簡歷信息,顯示到lookupResume.jsp;【減輕數據庫的壓力,但是查詢速度可能比較慢】
8.5、退出系統(index.jsp)
開發過程中遇到的問題
1、
在進行用戶注冊時,插入數據庫時,對于id的處理。數據庫中,設置id自動增長!!!!不要忘記啊!!在插入時就不用考慮id了,只需要插入用戶名和密碼就可以了。在程序中,如果需要設置id的話,可直接設置為空;
http://zhidao.baidu.com/link?url=1Qe5PR-PSZjxwRF9pShG1cEXhZCIpQ9NpcpJtNgq1qHPKrCNhyT_F9WTOOrdAuWJ1w8JL3fFRAPyUgcl2VMffK
2、
Template /template/ajax/head.ftl not found.有關Ajax主題的引入。
引入jar包,正確的寫法如下:
<%@ taglib uri="/struts-dojo-tags" prefix="ss" %> <ss:datetimepicker name="birthday" displayFormat="yyyy-MM-dd" />3、我想點擊“查看簡歷”跳轉到userResume.jsp,這個過程要調用selectUserResume.action(SelectUserResumeAction.java)來查回簡歷信息(通過姓名查詢);如何通過“查看簡歷”這個鏈接來調用一個action呢???
<struts: a href="actionname" > </struts: a>4、FreeMarker template error!
解決方法:
http://blog.csdn.net/zhangyulin54321/article/details/9109139
5、session中存放用戶登錄和注冊之后的用戶名密碼,當用戶點擊查看簡歷時,通過什么來查回該用戶的簡歷呢???
所以我想到的解決辦法就是:當用戶注冊成功完善個人信息時要有一個屬性“注冊時的昵稱”,即要在userbaseinfo表中加一個username屬性!!
6、從后臺action中得到一個結果集,如何把這個結果集在JSP頁面中顯示出來???
(userResume.jsp,SelectUserResumeAction.java)
該對象集不需要定義成List或者Map之類的對象,只需要是其相應的JavaBean對象就行。后臺要把該對象集的各個屬性分別顯示出來,在后臺action中一定要有該對象集的getter和setter方法!!!!!而該對象集的各屬性的getter和setter方法不需要有(前提是該對象集是一個javabean對象,并且相應的方法已經定義)。
另外,前臺需要顯示的屬性后臺action中一定要有相應的getter和setter方法!!!!!!!!!!!1
注意!!!!!!以公司身份登陸時,在查看某公司發布的招聘信息時,用到的就是一個List集合!!!我的設計思想是,通過公司注冊時使用的username來查回發布的相應招聘信息,一個用戶名下,也就是一個公司帳戶下可以發布多條招聘信息。
7、該項目中使用了一個自定義的攔截器用于權限驗證,關于攔截器的使用,以下是要注意的問題:
a、在struts.xml中配置攔截器時要先配置攔截器在配置全局Result!!
b、一定要注意!!使用自定義攔截器的action一定也要配置默認攔截器的引用,因為默認攔截器包含了參數的讀取、session的管理等功能。
<interceptor-ref name="defaultStack" />
c、一定要注意,攔截器只能攔截action,無法攔截所有的請求,如JSP頁面的訪問!!!!,如果想攔截對JSP頁面的訪問可以使用過濾器來完成。
8、使用攔截器之后如何將有關攔截器驗證情況的信息帶回到相應的JSP頁面???
攔截器中可寫出如下代碼:
ActionSupport action=(ActionSupport)invocation.getAction();
action.addActionMessage(“您還沒有登錄或者登陸已經超時,請重新登陸!(要展示的有關攔截器驗證情況的信息)”);
在前臺的JSP頁面中通過${ action.actionMessages }取得該提示信息
總結
- 上一篇: 【Hibernate】Hibernate
- 下一篇: SSH整合实例详解