劉繼華,郝芳芳,武桂芬
(呂梁學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,山西 離石 033001)
·計(jì)算機(jī)科學(xué)研究·
基于J2EE的大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
劉繼華,郝芳芳,武桂芬
(呂梁學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,山西 離石 033001)
《大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目管理系統(tǒng)》是在校大學(xué)生申報(bào)大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目的信息管理系統(tǒng),該系統(tǒng)采用B/S架構(gòu),MVC模式,方便大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目相關(guān)資料的提交以及主管部門對這些資料的信息化審核、管理,對于當(dāng)前高校對大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目管理具有較強(qiáng)的實(shí)際意義.
J2EE;項(xiàng)目管理;創(chuàng)新創(chuàng)業(yè)
大學(xué)生創(chuàng)新性實(shí)驗(yàn)項(xiàng)目是在校大學(xué)生本人或組織團(tuán)隊(duì),在導(dǎo)師的輔導(dǎo)下,自己選題、自主組織實(shí)施并完成數(shù)據(jù)分析處理和編寫總結(jié)等工作,該項(xiàng)目旨在培養(yǎng)學(xué)生問題提出、問題分析和解決的興趣和能力.遵循“公開立項(xiàng)、自由申報(bào)、擇優(yōu)資助、規(guī)范管理”的規(guī)則,著重資助思路新穎、目標(biāo)明確、具有創(chuàng)新性和探索性、研究方案及技術(shù)路線可行、實(shí)施條件可靠的項(xiàng)目[1].就目前該項(xiàng)目的實(shí)施情況分析,國內(nèi)大多數(shù)院校在實(shí)施此計(jì)劃時(shí),采用傳統(tǒng)的自上而下的消息傳遞與紙質(zhì)文件的逐級遞交模式.這種模式中,從項(xiàng)目前期的項(xiàng)目立項(xiàng)到后期的結(jié)題驗(yàn)收,中間需要遞交的紙質(zhì)文件很多,執(zhí)行周期長,效率低.這種文件管理模式不便于項(xiàng)目資料的查詢、存儲(chǔ)、管理,因此,利用互聯(lián)網(wǎng)的交互式管理來代替以前的以逐級式呈遞的繁瑣工作流程,建立一套高效的創(chuàng)新創(chuàng)業(yè)實(shí)驗(yàn)計(jì)劃項(xiàng)目管理系統(tǒng)是十分必要的.
架構(gòu)在一定程度上可以理解為替應(yīng)用程序之間共享數(shù)據(jù)提供可重用組件的一種便捷封裝機(jī)制,是一個(gè)應(yīng)用程序的半成品,使用框架技術(shù)能夠提高應(yīng)用程序的開發(fā)效率,本系統(tǒng)的實(shí)現(xiàn)采用基于java web 三層架構(gòu).[2]系統(tǒng)架構(gòu)的本質(zhì)還是傳統(tǒng)的mvc模式,本系統(tǒng)在實(shí)現(xiàn)過程中對傳統(tǒng)的mvc模式進(jìn)行了封裝和改進(jìn),改進(jìn)之后使得系統(tǒng)層與層之間耦合度更加低,層與層之間的分工更加明確,下面詳細(xì)闡述各層的功能.
表現(xiàn)層:主要體現(xiàn)在前端的jsp頁面,jsp頁面用來渲染界面,頁面通過瀏覽器接收客戶端發(fā)起的各種請求并傳遞給后端控制器servlet,servlet處理該請求數(shù)據(jù),并進(jìn)行數(shù)據(jù)封裝、處理業(yè)務(wù)、響應(yīng)參數(shù)、跳轉(zhuǎn)頁面.jsp與servlet之間傳遞數(shù)據(jù)用的是jsp技術(shù)的域?qū)ο?request、session、application)傳遞.
業(yè)務(wù)層:業(yè)務(wù)層是表現(xiàn)層和持久化層的一個(gè)中介,它既可以接收servlet中的請求數(shù)據(jù)并傳遞給數(shù)據(jù)持久層dao,也可以從持久層中查詢的數(shù)據(jù)傳遞給servlet,它在中間負(fù)責(zé)請求數(shù)據(jù)的業(yè)務(wù)處理.
持久化層:持久化層接收從業(yè)務(wù)層傳來的數(shù)據(jù),可以把這些數(shù)據(jù)持久化到硬盤并進(jìn)行分類存儲(chǔ),也可以根據(jù)條件讀取磁盤中的數(shù)據(jù)傳遞到業(yè)務(wù)層.
2.1 系統(tǒng)流程
系統(tǒng)始終圍繞呂梁學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目的線下執(zhí)行過程而設(shè)計(jì),主要分為學(xué)生用戶的注冊,學(xué)生用戶的登錄,編輯注冊信息,審核個(gè)人信息,編輯項(xiàng)目信息,查看項(xiàng)目通知,檢索項(xiàng)目,上傳項(xiàng)目附件,項(xiàng)目查詢,博客求助,優(yōu)秀作品瀏覽,審核專家登錄,審核學(xué)生信息,審核項(xiàng)目信息,審核狀態(tài)通知,超級管理員編輯,指定,修改,刪除審核專家,超級管理員審核學(xué)生信息,超級管理員審核項(xiàng)目信息,超級管理員通知項(xiàng)目審核狀態(tài)等.
學(xué)生用戶管理:學(xué)生必須注冊成為系統(tǒng)的學(xué)生用戶后才能進(jìn)行后續(xù)操作.學(xué)生利用手機(jī)號(hào)、密碼進(jìn)行登陸后可以進(jìn)行查看和修改個(gè)人信息、查看項(xiàng)目申請流程,申請?zhí)峤豁?xiàng)目信息,上傳項(xiàng)目文件,查詢項(xiàng)目審核狀態(tài),查看項(xiàng)目審核通知信息等[3].
審核專家用戶管理:審核專家可以查看學(xué)生信息,查看學(xué)生提交的項(xiàng)目申請及項(xiàng)目相關(guān)的附件,審核項(xiàng)目,通知項(xiàng)目負(fù)責(zé)人審核信息,并提出相關(guān)意見給項(xiàng)目負(fù)責(zé)人等.
系統(tǒng)管理員管理:數(shù)據(jù)庫管理員指定系統(tǒng)管理員的重要權(quán)限,該角色的主要功能是查看和修改審核專家信息、查閱學(xué)生提交的項(xiàng)目申請及項(xiàng)目相關(guān)的附件,審核項(xiàng)目,通知項(xiàng)目負(fù)責(zé)人審核信息,針對項(xiàng)目問題向項(xiàng)目負(fù)責(zé)人提出合理的修改建議等.
系統(tǒng)的數(shù)據(jù)流圖如下:(見圖1)
圖1 數(shù)據(jù)流圖
2.2 系統(tǒng)總體架構(gòu)
整個(gè)系統(tǒng)采用java web[4]三層架構(gòu),持久層,業(yè)務(wù)邏輯層,網(wǎng)絡(luò)層,持久層用來持久化數(shù)據(jù)記錄,如圖:業(yè)務(wù)邏輯層用來處理系統(tǒng)相關(guān)的一些業(yè)務(wù),網(wǎng)絡(luò)層用來處理頁面請求.由html5,css3,jquery,ajax等流行的web前端開發(fā)技術(shù)[5]開發(fā)的jsp頁面負(fù)責(zé)系統(tǒng)請求的發(fā)起與響應(yīng)內(nèi)容的展示.頁面請求的發(fā)起主要由html 標(biāo)記語言配合jstl標(biāo)簽通過form表單,超鏈接發(fā)起,還有少數(shù)功能使用ajax異步和同步技術(shù)提交請求.當(dāng)請求提交后,網(wǎng)絡(luò)層的控制器調(diào)度業(yè)務(wù)邏輯層的方法處理請求業(yè)務(wù),相關(guān)業(yè)務(wù)所對應(yīng)的數(shù)據(jù)將在持久層與數(shù)據(jù)庫交互時(shí)得到[6].
總體架構(gòu)如下圖:(見圖2)
圖2 系統(tǒng)架構(gòu)圖
2.3 創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目流程階段
本團(tuán)隊(duì)人員在調(diào)研,分析數(shù)據(jù),抽象大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃各個(gè)角色的執(zhí)行流程之后,將各個(gè)階段的流程由線下模式發(fā)展為網(wǎng)絡(luò)在線操作.這其中主要分為學(xué)生申請項(xiàng)目,提交項(xiàng)目,查詢項(xiàng)目信息,審核專家查看項(xiàng)目申請以及各個(gè)階段相關(guān)材料,審核項(xiàng)目,管理項(xiàng)目,檢索項(xiàng)目,系統(tǒng)管理員管理審核專家,核實(shí)學(xué)生身份,審核專家身份等三大模塊17項(xiàng)功能.
系統(tǒng)各模塊的業(yè)務(wù)流程如圖:(如圖3)
圖3 業(yè)務(wù)流程圖
2.4 系統(tǒng)實(shí)現(xiàn)
學(xué)生用戶登錄成功后進(jìn)入學(xué)生用戶系統(tǒng),在此系統(tǒng)中學(xué)生可以利用編輯這一功能選項(xiàng)來修改個(gè)人注冊的非學(xué)籍信息,同時(shí)也可以查看項(xiàng)目申請流程,編寫項(xiàng)目申請.在編寫完項(xiàng)目申請后學(xué)生用戶可以編輯修改項(xiàng)目申請,最后將確定修改無誤后的項(xiàng)目申請?zhí)峤?創(chuàng)新創(chuàng)業(yè)項(xiàng)目訓(xùn)練計(jì)劃過程中各階段的文件也可以在項(xiàng)目信息中上傳.學(xué)生可以通過本系統(tǒng)查詢自己申報(bào)過的各個(gè)項(xiàng)目申報(bào)情況,還有處于中期階段的項(xiàng)目以及處于結(jié)題階段的項(xiàng)目情況.在項(xiàng)目審核的各個(gè)階段時(shí)間內(nèi),學(xué)生用戶可以在本系統(tǒng)中查詢項(xiàng)目的通過情況.當(dāng)學(xué)生用戶有意向申報(bào)創(chuàng)新創(chuàng)業(yè)項(xiàng)目但沒有任何思路或者需要?jiǎng)e人的意見的時(shí)候,他可以利用該系統(tǒng)進(jìn)行網(wǎng)絡(luò)在線求助,也可以瀏覽往年優(yōu)秀的創(chuàng)新創(chuàng)業(yè)項(xiàng)目,從中吸取經(jīng)驗(yàn).
審核專家進(jìn)入系統(tǒng)后可以查詢學(xué)生用戶提交的項(xiàng)目申請,中期進(jìn)展階段,結(jié)題階段的項(xiàng)目記錄,閱讀相關(guān)的項(xiàng)目附件,通過項(xiàng)目附件以及線下和各位審核專家的商議決定項(xiàng)目通過與否,在審核結(jié)束后,給項(xiàng)目審核通過的學(xué)生發(fā)消息通知.
本系統(tǒng)利用java實(shí)現(xiàn)了項(xiàng)目一期的開發(fā),針對系統(tǒng)特點(diǎn)在權(quán)限控制方面采用RBAC來控制各角色的權(quán)限,通過各角色的權(quán)限控制其功能.開發(fā)過程中具體的權(quán)限控制利用java web中filter組件實(shí)現(xiàn),訪問網(wǎng)站的所有請求都要通過filter組件詳細(xì)過濾,該組件在過濾到請求之后從session中取出用戶的個(gè)人信息,通過個(gè)人信息的類型來識(shí)別用戶[7].如果要訪問需要敏感信息例如只有超級管理員可以執(zhí)行的操作,同樣也需要通過filter組件來實(shí)現(xiàn),如果用戶沒有登錄要訪問網(wǎng)站信息,同樣也會(huì)在filter組件中過濾請求,filter組件識(shí)別到該用戶沒有登錄,就會(huì)采取一定措施攔截該請求.具體實(shí)現(xiàn)如下(部分代碼):
public class AdminFilter implements Filter {
public void destroy() {
System.out.println("====admin過濾器停止中====");
}
public void doFilter(ServletRequest arg0,ServletResponse arg1,
FilterChain arg2) throws IOException,ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
response.setContentType("html/text;charset=utf-8");//設(shè)置編碼
User user=(User) request.getSession().getAttribute("user");
if(user==null||!user.getUserType().equals("2")){
request.getRequestDispatcher("/default3.jsp").forward(request,
response);
}else{
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("====過濾器啟動(dòng)中====");
}
}
public class AddFilter implements Filter {
部分應(yīng)用型學(xué)科如土木工程、機(jī)械與動(dòng)力工程、安全科學(xué)與工程等的學(xué)科建設(shè)緊密圍繞行業(yè)發(fā)展與應(yīng)用,因此,用戶提出國內(nèi)國際專利文獻(xiàn)與標(biāo)準(zhǔn)文獻(xiàn)的使用需求,并希望獲得原始全文。
public void destroy() {
System.out.println("====add過濾器停止中====");
}
public void doFilter(ServletRequest arg0,ServletResponse arg1,
FilterChain arg2) throws IOException,ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
response.setContentType("html/text;charset=utf-8");//設(shè)置編碼
User user=(User) request.getSession().getAttribute("user");
if(user==null){
request.getRequestDispatcher("/default2.jsp").forward(request,
response);
}else if(!(user.getUserType().equals("2"))){
request.getRequestDispatcher("/default2.jsp").forward(request,
response);
}else{
arg2.doFilter(request,response);
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("====過濾器啟動(dòng)中====");
}
}
在數(shù)據(jù)持久層化方面,主要采用了c3p0數(shù)據(jù)庫連接池來提高系統(tǒng)的性能,降低系統(tǒng)和各數(shù)據(jù)庫的耦合,通過封裝,抽象jdbc的一些基本操作來實(shí)現(xiàn)數(shù)據(jù)庫事務(wù)控制,保持?jǐn)?shù)據(jù)的ACID
特性[8],具體實(shí)現(xiàn)核心代碼如下:
public class JdbcUtils {
private static DataSource ds = new ComboPooledDataSource();
private static ThreadLocal
public static DataSource getDataSource() {
return ds;
}
public static Connection getConnection() throws SQLException {
Connection con = tl.get();//獲取當(dāng)前線程的事務(wù)連接
if(con != null) return con;
return ds.getConnection();
}
public static void beginTransaction() throws SQLException {
Connection con = tl.get();//獲取當(dāng)前線程的事務(wù)連接
if(con != null) throw new SQLException("已經(jīng)開啟了事務(wù),不能重復(fù)開啟!");
con = ds.getConnection();//給con賦值,表示開啟了事務(wù)
con.setAutoCommit(false);//設(shè)置為手動(dòng)提交
tl.set(con);//把當(dāng)前事務(wù)連接放到tl中
}
public static void commitTransaction() throws SQLException {
Connection con = tl.get();//獲取當(dāng)前線程的事務(wù)連接
if(con == null) throw new SQLException("沒有事務(wù)不能提交!");
conmmit();//提交事務(wù)
con.close();//關(guān)閉連接
con = null;//表示事務(wù)結(jié)束!
tl.remove();
}
/**
*回滾事務(wù)
* @throwsSQLException
*/
public static void rollbackTransaction() throws SQLException {
Connection con = tl.get();//獲取當(dāng)前線程的事務(wù)連接
if(con == null) throw new SQLException("沒有事務(wù)不能回滾!");
con.rollback();
con.close();
con = null;
tl.remove();
}
public static void releaseConnection(Connection connection) throws SQLException {
Connection con = tl.get();//獲取當(dāng)前線程的事務(wù)連接
if(connection != con) {//如果參數(shù)連接,與當(dāng)前事務(wù)連接不同,說明這個(gè)連接不是當(dāng)前事務(wù),可以關(guān)閉!
if(connection != null &&!connection.isClosed()) {//如果參數(shù)連接沒有關(guān)閉,關(guān)閉之!
connection.close();
}
}
}
}……
呂梁學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目管理系統(tǒng)由當(dāng)下流行的java web[9]三層架構(gòu),JavaEE技術(shù)開發(fā)[10],綜合呂梁學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目訓(xùn)練項(xiàng)目實(shí)施流程,通過拜訪審核專家教師,調(diào)研往年參加創(chuàng)新創(chuàng)業(yè)訓(xùn)練項(xiàng)目的學(xué)生,進(jìn)行了具體詳細(xì)的分析設(shè)計(jì),解決了傳統(tǒng)逐層紙質(zhì)文件提交,逐級消息通知效率低等問題.但是,在經(jīng)過無數(shù)次的測試后發(fā)現(xiàn),該系統(tǒng)仍有許多不合理的地方有待改進(jìn).比如:系統(tǒng)在提交項(xiàng)目申報(bào)提交時(shí),系統(tǒng)每次提交都得確認(rèn)項(xiàng)目信息然后提交,不能直接一次性提交;系統(tǒng)在博客求助時(shí),沒有建立自己特定的博客數(shù)據(jù)庫,而是鏈接到第三方博客庫,這不利于信息的安全存儲(chǔ);審核專家在審核項(xiàng)目時(shí),審核團(tuán)體各自的意見需要在線下進(jìn)行,不能直接通過網(wǎng)絡(luò)在線交流.總之,在項(xiàng)目使用的過程中我們將會(huì)不斷根據(jù)需求升級系統(tǒng)功能,以達(dá)到進(jìn)一步完善系統(tǒng)的目的.
[1]張偉.濟(jì)寧學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2015.
[2]董婷.國內(nèi)外大學(xué)生創(chuàng)新創(chuàng)業(yè)教育研究現(xiàn)狀述評[J]. 社會(huì)科學(xué),2016(2).
[3]冀偉,陳蘊(yùn)智.大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目管理機(jī)制探討[J].大連海洋大學(xué),2016(3).
[4]常建國.Java Web典型模塊與項(xiàng)目實(shí)戰(zhàn)大全[M]. 北京: 清華大學(xué)出版社,2011.
[5]譚浩強(qiáng).網(wǎng)頁編程技術(shù)與實(shí)例[M]. 北京: 人民郵電出版社,2014.
[6]劉京華.Java Web整合開發(fā)王者歸來[M]. 北京: 清華大學(xué)出版社,2010.
[7]施偉偉,張蓓.web 2.0 快速入門與項(xiàng)目實(shí)戰(zhàn)[M]. 北京: 人民郵電出版社,2006.
[8]雨陽隆春.深入JSP 網(wǎng)絡(luò)編程[M]. 北京: 清華大學(xué)出版社,2015.
[9]克拉恩·帕斯卡 ,雷洛·吉姆斯. Ajax實(shí)戰(zhàn)[M]. 北京: 人民郵電出版社,2006.
[10]Bruce Excel. java 編程思想[M]. 北京: 機(jī)械工業(yè)出版社,2005.
Design and Implementation of Undergraduate Training Programs of innovation and Entrepreneurship System Based on J2EE
LIU Ji-hua,HAO Fang-fang,WU Gui-fen
(School of Computer Science,Lüliang University,Lishi Shanxi 033001,China)
This paper studies the college students’ innovative entrepreneurial project management system is to college students,according to the college students’ innovative entrepreneurial project to deepen their studies and lay a foundation for future employment information management system,the system adopts B/S structure,MVC pattern,convenient for college students’ innovative entrepreneurial project related information submitted and the competent department of information audit and management of these data,the colleges and universities for the current project management on college students’ innovative undertaking has strong practical significance.
J2EE;Project management;Innovative undertaking
2017-02-08
國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目(201610812003);校級教學(xué)改革項(xiàng)目(JYYB201603).
劉繼華(1975-),女,山西運(yùn)城人,副教授,研究方向?yàn)檐浖こ?、軟件測試及云計(jì)算.
TP311
A
2095-185X(2017)02-0037-06