戚 平, 王 林, 李 末
(中國石油大學(華東)計算機與通信工程學院,山東 青島 266555)
當前社會已經(jīng)步入了信息技術(shù)高度發(fā)展和應(yīng)用的時代,信息技術(shù)的應(yīng)用已經(jīng)成為一個企事業(yè)單位在社會中生存發(fā)展的重要決定因素,所以通過網(wǎng)絡(luò)進行信息管理的網(wǎng)絡(luò)管理系統(tǒng)的出現(xiàn)和普及是社會發(fā)展的一個趨勢。管理信息系統(tǒng)是一個由人﹑計算機組成的能進行信息收集﹑傳遞﹑存儲﹑加工﹑維護和使用的系統(tǒng)[1]。
計算機技術(shù)和通信技術(shù)不斷快速發(fā)展,網(wǎng)絡(luò)的全球普及化,“無紙化辦公”思想在地球資源日益枯竭的威脅下深入人心,全世界都在根據(jù)自己的實際情況,開發(fā)出一系列的網(wǎng)絡(luò)管理、網(wǎng)絡(luò)辦公系統(tǒng),有效地解決辦公地域全球化,以及規(guī)模擴大所帶來的各種問題。
隨著我國高等教育逐步從精英教育向大眾教育過渡的趨勢,近年來,我國各類高校招生規(guī)模不斷增大,每年新生入學人數(shù)不斷增加。在這樣的前提下,由于高校學生人數(shù)的逐年增加,必然要求各高校不斷補充實驗設(shè)備,改善實驗室設(shè)備管理水平,從而提高實驗室設(shè)備的利用率,而高校實驗室設(shè)備的數(shù)量和管理水平則是考核一所高等學校辦學條件的一項重要指標。
從我校自身角度來說,實驗室設(shè)備管理仍然采用的是傳統(tǒng)的管理模式:實驗室各部門分發(fā)實驗設(shè)備時,需要人工登記,諸如設(shè)備預(yù)約、預(yù)約時長、設(shè)備歸還、報廢等具體操作。實驗室設(shè)備相關(guān)信息的查詢還必須組織人員親自到實驗室進行。事實證明:這種傳統(tǒng)的實驗室管理模式既浪費人力資源,又不利于提高工作效率,甚至難以提高設(shè)備資源的利用率,不能支持大量學生用戶的使用等?;谝陨显?,設(shè)計開發(fā)一個實驗室設(shè)備管理系統(tǒng),使得網(wǎng)上管理設(shè)備數(shù)據(jù)更加實用、有效就成為必然。
實 驗 室 設(shè) 備 管 理 系 統(tǒng) 采 用 java、JavaBean、JavaScript、JDBC等技術(shù)進行開發(fā),采用了在JSP頁面中調(diào)用JavaBean,并在JSP頁面中的輸入欄中添加了JavaScript。JDBC用于一開始與數(shù)據(jù)庫的鏈接,主要滿足管理員對系統(tǒng)的管理功能,實驗室主管對系統(tǒng)的管理功能,用戶對系統(tǒng)的查詢預(yù)約功能。各個模塊分別是用戶模塊、實驗室模塊、設(shè)備模塊、修改資料和密碼模塊、退出模塊等。管理員負責對用戶和實驗室以及整個系統(tǒng)的管理,實驗室主管負責對設(shè)備的管理;用戶僅需要對實驗室里的設(shè)備進行查詢和預(yù)約設(shè)備進行相關(guān)實驗,不需要關(guān)注系統(tǒng)的具體工作流程及工作細節(jié)問題。主要的功能模塊銜接如圖1所示。
數(shù)據(jù)庫方面選擇使用SQL Server 2000,在實現(xiàn)系統(tǒng)功能的基礎(chǔ)上最大限度的防止了非法竊取他人信息的行為的發(fā)生[2]。此系統(tǒng)使高校實驗室管理更方便、高效,實現(xiàn)了設(shè)備數(shù)據(jù)的共享以及網(wǎng)絡(luò)化的管理,幫助高校有效地對設(shè)備相關(guān)數(shù)據(jù)和用戶相關(guān)數(shù)據(jù)以及實驗室相關(guān)數(shù)據(jù)進行全面信息化的管理。整體功能結(jié)構(gòu)圖如圖2所示。
圖1 主要功能模塊銜接圖Fig.1 Convergence diagram of main function modules
圖2 系統(tǒng)功能結(jié)構(gòu)圖Fig.2 Functional structure
系統(tǒng)在實現(xiàn)不同的功能模塊時,都要用到連接數(shù)據(jù)庫的操作,連接數(shù)據(jù)庫的具體操作如下所述,建立一個公共訪問數(shù)據(jù)庫的類,以減少多余代碼,并使用JDBC連接數(shù)據(jù)庫[3]。具體的連接步驟如下:
1)把SqlServer的3個連接數(shù)據(jù)庫的包msbase.jar、mssqlserver.jar、msutil.jar先添加進來;再定義變量
把在與數(shù)據(jù)庫相關(guān)聯(lián)的變量定義出來,便于以后使用。其中userName是SQL Server2000中使用的用戶名,userPassword是用戶名對應(yīng)的用戶密碼,URL是要建立連接的地址。
2)加載及注冊驅(qū)動
加載驅(qū)動程序后,創(chuàng)建一個driver對象,并經(jīng)由調(diào)用drivermanager.registerdriver()來自動注冊此對象。
3)建立連接
說明:“jdbc:microsoft:sqlserver”是通訊協(xié)議;
主機地址:localhost或本機ip地址;
端口號:1433,然后數(shù)據(jù)庫名稱:labdate;
用戶名:sa 密碼:“”。
4)建立一個SQL陳述式對象
5)執(zhí)行 sql語句
在軟件架構(gòu)過程中,不可避免地遇到了不少問題,下面是遇到的主要問題及解決方法。
1)問題描述:建立映射之后,接著對數(shù)據(jù)庫進行操作,提取連接表之間的數(shù)據(jù)時,提示:org.hibernate.LazyInitializationException:could not initialize proxy-the owning Session was closed
解決方法:這是使用Hibernate經(jīng)常出現(xiàn)的一個錯誤,原來表的映射文件屬性lazy默認值為true,將其值改為false就可以了[4]。
2)問題描述:在提取數(shù)據(jù)庫中的用戶信息時,因為有圖片,將查詢得到的所有用戶信息記錄放到一個list中時,提示錯誤,說list中不能存放圖片類型的對象,即格式不正確。
解決方法:錯誤原因是Hibernate連接數(shù)據(jù)庫的驅(qū)動有問題,把驅(qū)動換成Microsoft SQL server(JTDS)就可以了。
3)問題描述:對設(shè)備檔案數(shù)據(jù)行增加、修改操作時,提示錯誤:a different object with the same identifier value was already associated with the session,就是說在一個session中存在兩個不同的對象使用了相同的ID。
解決方法:這個問題比較難解決,如果對Hibernate不是很熟悉,只根據(jù)一些相關(guān)資料,將session的一個方法update()改為 saveOrUpdate()或者 session.merge(),又或者其他的一些方法,問題是難以解決的。最后通過更換session中的一個方法得以解決,即改為session.load(lx,sbdasjsForm.getSblx()),sb.setSblx(lx),session.clear(),session.update()。 其 中 lx是設(shè)備類型的一個對象類,sb是設(shè)備檔案數(shù)據(jù)的一個對象。
4)問題描述:在剛開始編寫代碼時,做了一個帶驗證的框架時提示:java.lang.IllegalArgumentException:Resources cannot be null。意思是資源不能為空。
解決方法:在struts-config.xml的配置文件中加上驗證插件 <plug -in className = ”org.apache.struts.validator.validatorPlugIn”><set-property property=”pathnames” value=”/WEB-INF/validator-rules.xml, /WEB-INF/validator.xml” ></plug-in>。
5)問題描述:首先,由于瀏覽器中的參數(shù)傳遞是按字節(jié)傳送,因此英文和數(shù)字不會有任何的問題,而中文漢字則由兩個字節(jié)組成,此時就會出現(xiàn)亂碼。其次,jsp頁面出現(xiàn)中文時,頁面中文出現(xiàn)亂碼,再次是往數(shù)據(jù)庫里添加數(shù)據(jù)時,出現(xiàn)中文不能識別,出現(xiàn)亂碼問題。
解決方法:首先,對于參數(shù)傳遞亂碼和jsp頁面是通過設(shè)置頁面編碼為“gbk”或“gb2312”,具體編碼如下:
其次,數(shù)據(jù)庫亂碼問題是通過過濾器filter,添加數(shù)據(jù)時,首先通過過濾器來識別,如果有中文,則把編碼方式改為“gbk”,過濾器 doFilter()方法如下[5]:
6)問題描述:添加用戶信息時,也是因為有圖片的緣故,導致出現(xiàn)以下異常:javax.servlet.ServletException:BeanUtils.populate
解決方法:這個是JSP中Form表單中的問題,ActionForm中的property不一定全是String類型的,也可以有別的類型,因為用戶信息中有用戶照片這個屬性,其類型比較特別[6]。Action接收到page的request后,會對Form進行填值,調(diào)用BeanUtils.populate method對各種數(shù)據(jù)類型進行轉(zhuǎn)換,其轉(zhuǎn)換照片類型時拋出了上述異常。經(jīng)過仔細分析,發(fā)現(xiàn)在 JSP頁面<html:form>標簽屬性中加入 enctype=“multipart/form-data”即可。
7)問題描述:導入Excel數(shù)據(jù)到數(shù)據(jù)庫中時,總是提示不能將number類型的數(shù)據(jù)插入到String類型屬性中。
解決方法:Excel中表格的數(shù)據(jù)類型必須與表中屬性類型一致,而且各個屬性要對應(yīng)好,否則,將不能把數(shù)據(jù)插入到數(shù)據(jù)庫中。因此,解決以上錯誤時,在程序中應(yīng)進行判斷,進行格式轉(zhuǎn)換,或者設(shè)置Excel表格中值的類型,在程序中設(shè)置表格數(shù)據(jù)類型并保持屬性一致。
實驗室設(shè)備管理系統(tǒng)研究目的在于對高校實驗室內(nèi)設(shè)備進行系統(tǒng)管理,使系統(tǒng)功能更加完善,滿足用戶的需求,并對實驗室設(shè)備進行系統(tǒng)化、規(guī)范化、信息化的管理。因此,使用JSP技術(shù)與SQL Server數(shù)據(jù)庫開發(fā)的實驗室設(shè)備管理系統(tǒng)具有一定的理論和實踐意義,符合當前社會網(wǎng)絡(luò)化辦公的趨勢:
1)對整個系統(tǒng)的設(shè)備進行系統(tǒng)管理,以實現(xiàn)設(shè)備的綜合效率。隨時隨地通過網(wǎng)絡(luò)全面準確記錄、保存設(shè)備各項數(shù)據(jù),特別是設(shè)備的損壞,并將損壞設(shè)備紀錄,讓實驗室主管可以清楚的理解設(shè)備狀況。
2)提高設(shè)備的利用率和降低設(shè)備損耗成本,避免或減少因設(shè)備損壞而導致的安全事故。有助于設(shè)備生命周期中的所有信息被實驗室主管和管理員查看和利用,促進相關(guān)信息的系統(tǒng)化管理。
3)提高設(shè)備數(shù)據(jù)的科學管理,節(jié)省人力和時間,減少原來傳統(tǒng)的實驗室管理方法造成的紙張浪費以及各種成本,為高校實驗室創(chuàng)造更多的價值。
[1]仲秋雁.管理信息系統(tǒng)[M].北京:清華大學出版社,2010.
[2]劉遵仁,于忠清.從零開始—SQL Serve中文版基礎(chǔ)培訓教程[M].北京:人民郵電出版社,2004.
[3]汪孝宜,劉忠兵,徐佳晶,等.JSP數(shù)據(jù)庫開發(fā)實例精粹[M].北京:電子工業(yè)出版社,2005.
[4]鄭阿奇.JSP實用教程[M].北京:電子工業(yè)出版社,2008.
[5]劉中兵,李伯華,鄒晨.JSP數(shù)據(jù)庫項目案例導航[M].北京:清華大學出版社,2006.
[6]張蓓,趙國峰.JSP數(shù)據(jù)庫通用模塊開發(fā)和系統(tǒng)移植[M].北京:清華大學出版社,2007.