張艷璐等



摘 要: 傳統模式下的高校畢業生信息管理效率低、保密性差;而基于面向對象Java語言與ExtJS Web開發技術的學生就業信息管理系統,能滿足數據信息集中管理和維護、實時查詢的需求,提高管理的效率和質量。本系統為B/S系統,采用tomcat進行部署運行,所有的頁面統一為JSP,后臺使用主流的SSH框架,運用MVC模式進行系統設計。
關鍵詞: 信息管理系統; Java; ExtJS Web; B/S系統; SSH框架; MVC
中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2014)01-38-04
0 引言
目前,將Web技術和數據庫技術相結合,開發動態交互式數據庫網頁,已成為當今Web技術研究的熱點;高校畢業生數量急劇增加,有關高校畢業生的各種信息量也成倍增長,高校畢業生信息的管理工作量與工作難度也在增長。本文提出一種基于Web的畢業生就業管理系統的方案,它對于學校的決策者和管理者來說都至關重要,能夠為用戶提供充足的信息和快捷的查詢手段。能有效地幫助學校和老師掌握高校畢業生的情況,為高校畢業生提供成績、就業信息等方面的查詢。
1 系統總體架構
本系統采用主流的Java EE三層結構,分為表現層、業務邏輯層和數據服務層。三層體系將業務規則、數據訪問等工作放在中間層處理,客戶端不直接與數據庫交互,而是通過控制層與中間層建立連接,再由中間層與數據庫交互。系統的表現層全部使用JSP頁面來顯示,結合EL表達式以及JS技術來生成頁面顯示效果。中間層采用Struts 2+Spring 3+Hibernate 2框架,為了對控制層與業務邏輯層進行分離,又可按以下細分。
⑴ Web層:即MVC模式里面的Controller,主要負責對控制層與業務邏輯層,調用業務邏輯層的分離,并將業務數據返回給表現層,本系統的MVC框架主要使用Struts 2。
⑵ Service層(業務邏輯層):主要負責實現各種業務邏輯,對DAO對象進行封裝。
⑶ DAO層(數據訪問對象層):負責與持久化對象交互,實現數據的增、刪、改、查原子操作。
⑷ Domain層(持久化對象域層):將關系型數據庫的數據映射成對象,可直接通過面向對象方式操作數據庫,用Hibernate的ORM框架實現該層。
MVC模式[1]下,所有從前臺返回的用戶請求都由Struts 2的Action負責攔截,然后通過Spring提供的IOC(控制反轉)功能,定位Spring容器中的Service對象,來處理具體的用戶請求,如圖1所示。
1.1 JSP技術
JSP將網頁邏輯與網頁設計和顯示分離,支持可重用的基于組件的設計。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成,服務器在頁面被客戶端請求以后對Java代碼進行處理,然后將生成的結果同HTML代碼返回給客戶端。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態網頁所需要的功能。
1.2 Struts 2技術
Struts 2以WebWork[2]為核心,采用攔截器的機制來處理用戶請求,且基于Model(提供內部數據)-View(顯示數據)-Controller(決定執行過程)架構。Web應用程序啟動時,瀏覽器所有請求都被提交給ActionServlet處理;提交表單時,ActionForm對象將被創建,并被填入表單中相應的數據;ActionServlet根據struts-config.xml文件中的配置,如果需要驗證,則成功后選擇將請求轉發給某個Action,若Action對象不存在則先創建,再調用其execute()方法,即從ActionForm對象中獲取數據,返回一個ActionForward對象,再由其指向的JSP組件生成動態網頁。
1.3 Spring框架
基于JavaBean的Spring是一個開源框架,它的用途不僅限于服務器端的開發,從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益,即Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。
1.4 Hibernate框架
Hibernate中提供了兩級Cache,第一級別的緩存是Session級別的緩存,它是屬于事務范圍的緩存。這一級別的緩存是由hibernate管理的,一般情況下無需進行干預;第二級別的緩存是SessionFactory級別的緩存,它是屬于進程范圍或群集范圍的緩存,這一級別的緩存可以進行配置和更改,并且可以動態加載和卸載。
2 就業統計分析系統的設計與實現
采用面向對象的分析方法[3]對系統進行需求分析,按不同角色分類,可劃分為系統管理員對系統的需求、學生對系統的需求兩大功能需求,再建立用例模型,并考慮界面需求進行系統設計,主要涉及模塊結構、類、數據庫設計,界面是基于ExtJS Web技術的[4]。
2.1 模型結構及類模型
模型結構及類模型如表1所示。
從表1中的模塊看,至少需要五個類:公司基本信息類,公司招聘信息類,學生類,學生求職意向類和學生就業信息類,這些類之間的基本關系如圖2所示。
2.2 數據庫設計
分析本系統所涉及到的實體,主要包括公司基本信息、公司招聘信息、學生基本信息、學生求職信息、學生就業信息。如圖3所示,表為一個實體,表里面的字段屬性(如數據庫表company_info表示公司的基本信息,里面的company_name表示公司的名稱),表中帶虛線的箭頭代表表之間的依賴關系(如company_recruit中的recruit_company字段依賴于company_info數據庫表)[5]。
2.3 系統框架搭建
在Eclipse下搭建SSH框架,對Struts 2、Spring、Hibernate三者進行整合:在Eclipse下新建Web Project;導入Struts 2、Spring、Hibernate類庫,將jar包(已解決他們之間的沖突)復制到項目的WebRoot/WEB-INF/lib目錄下;在web.xml文件中增加struts 2所需的核心控制器和spring監聽,拷貝struts.xml文件到src根目錄下并進行相應的常量配置(如攔截器的配置);采用spring依賴注入[6]。
2.4 登錄界面
公司用戶進入登錄界面后,可以在中間看到最新的公告,點擊相應的鏈接,可以得到詳細信息和更多的公告;用戶輸入正確的用戶名和密碼后會根據用戶的權限進入后臺。登錄流程為:用戶發送登錄請求到系統的控制層,先通過數據庫的查詢,判斷用戶輸入的用戶名是否存在和用戶輸入的密碼是否正確,如果用戶名和密碼都正確,則進行權限判斷,否則,返回到登錄頁面。系統根據用戶的不同權限,分別進入到管理員后臺和學生后臺。
2.5 公司基本信息管理
公司基本信息管理包括對公司信息的添加、修改、刪除,點擊公司管理導航欄下的公司列表可以顯示所有公司。該列表顯示了公司名稱,公司地址以及公司類型等(如圖5所示),表格的上面可以輸入各種條件的組合,點擊查詢后可以找到符合條件的公司,查詢代碼演示如下:
if (!companyInfo.getCompanyName().equals(""))
query.add("companyName like '%"+companyInfo
.getCompanyName()
+ "%' ");
if (!companyInfo.getCompanyAddr().equals(""))
query.add(" companyAddr like '%" + companyInfo
.getCompanyAddr()
+ "%' ");
……
上述query用來存儲HQL語句中的各種查詢條件,再經過適當地處理,最后會得到一個完整的HQL查詢語句,并由DAO層執行此HQL語句,得出查詢結果。
2.6 公司招聘管理
公司招聘管理負責維護該系統所管理的所有公司發布的招聘信息,包括瀏覽公司的招聘列表,增加、刪除和修改招聘信息等;一個項招聘信息包括招聘的公司、招聘職位、招聘待遇和所需技術等信息。查看某個公司信息如圖6所示。
當點擊“查看詳情”時,可看到該公司的招聘信息。
2.7 學生就業信息統計
點擊在學生統計模塊下的就業統計,默認會顯示所有學生的簽約率、違約率、待業率,并且通過下拉菜單選擇相應的分類統計,如圖7所示的為按專業統計結果。
圖7的列表中的統計信息都是通過后臺業務層對數據里面的數據進行查詢和計算得出來的。例如,要統計某個專業的待業率,在后臺收到請求后,先判斷統計是不是按照專業來的,然后通過數據庫查詢得到專業的名稱,接著判斷統計的是不是待業率,如果是,則通過查詢數據庫的結果計算出專業的待業率,而待業人數和總人數則通過使用多表之間的組合查詢而得到,求得前者的主要代碼如下:
HibernateTemplate htp=this.getHibernateTemplate();
String hql="select count(*) from StudentInfo si, StudentEmploy se
where se.status=0"
+ "and si.studentName=se.studentName"
+ "and si.studentMajor='"+major+"'";
return (Long) (htp.find(hql).get(0));
代碼中HibernateTemplate是一個Hibernate的模板對象,里面的數據庫連接等底層實現都已經封裝好,可以直接通過調用它的相關方法來對數據庫表進行操作,se.status=0表示為待業狀態。執行上述代碼可得到某個專業的待業人數,再通過待業人數除以該專業總人數得出該專業的待業率。
2.8 就業匹配模塊
就業匹配是指,能夠按照企業招聘信息、畢業生求職信息和畢業生成績等基本信息進行自動智能匹配,力求使畢業生能夠找到合適的崗位,從而減輕企業和學生的工作量。例如,系統根據輸入的學生姓名,通過數據庫的查詢,得到此學生的求職意向,然后在業務層根據具體的匹配規則對公司的求職信息進行篩選,該匹配的部分演示代碼如下:
if (!studentHunt.getHuntPost().equals(""))
query.add("recruitPost like '%"+studentHunt.getHuntPost()
+ "%' ");
if (studentHunt.getHuntTreate()!=null)
query.add("recruitTreate>="+studentHunt.getHuntTreate());
}
點擊導航欄下面的就業匹配,在上面的文本框輸入學生姓名點擊匹配后,系統會根據學生的求職意向,從所有公司的招聘信息中招出符合條件的招聘信息顯示出來,如圖8所示。
3 結束語
SSH為Struts+Spring+Hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架,且struts的view層標簽豐富可操作性強,很適合用戶體驗。本文在這個框架基礎上,采用了面向對象的Java語言分析并實現學生與公司的需求,使層次和結構更加清晰,便于程序的編寫;采用與后臺技術無關且功能豐富的ExtJs技術進行頁面的設計,使設計更加完美。
參考文獻:
[1] 寇毅,吳力文.基于MVC設計模式的Struts框架的應用方法[M].計算
機應用,2003.23(11):91-9
[2] 李剛.Struts2權威指南—基于WebWork核心的MVC開發[M].電子
工業出版社,2007.
[3] 牛麗平,郭新志,宋強,楊繼萍等.UML面向對象設計與分析基礎教程[M].
清華大學出版社,2007.
[4] 張祖良,孫純,肖景海.Learning Ext JS[D].人民郵政出版社,2009.
[5] 邱壯志劍,宋建民等.數據庫原理與SQL Server[M].高等教育出版社,
2008.
[6] 楊俊生,唐琳,張坤編.Java Web開發實踐教程[M].清華大學出版社,
2010.