◆黃志瑜 張良杰
(福州工商學院信息工程系 福建 350700)
百年大計教育為本,隨著國家大力發展教育,學校的規模也在不斷擴大,基礎設施也越來越好。理論總要應用于實踐當中,實驗室在高校無論是育人還是科研都占據著重要地位。高校實驗室為培養符合時代的創新性、應用型人才發揮了關鍵作用[1]。那么如何最大效率化地管理實驗室,減輕人力物力的浪費就顯得尤為重要??萍嫉倪M步帶來了管理上的革新,實驗室從傳統的管理,到利用信息技術來改良管理,從以前的紙筆人工化轉換為現在的數據庫存儲半自動化,甚至是自動化,從而催生出了實驗室管理系統。
國內的一些高校根據自身的需求情況也已經進行了實驗室管理系統的研究并且投入使用,如:北京大學的實驗室儀器分類管理系統、實驗室項目隊伍管理系統;北京化工大學在原有實驗室管理系統上開發出教學廣播、學生預約等功能,以較低的成本來安排大量的學生實驗和儀器設備的使用,取得了較好的效果。
然而,高校在實驗室管理上依然存在一些問題。一部分高校的實驗室管理依然采取人工管理方式,雖然專門成立了一個設備管理科,但是使用的仍然是紙質化結合Word文檔、Excel表格進行管理,在老師和學生需要使用設備的時候,要事先填寫各種表格導致效率低下。另一部分高校的實驗室管理系統不重視設備的利用率和維護,無報廢和維修功能,大量的設備處于無人用、無人管狀態,設備的即時狀態無法及時掌握[2],設備損壞后沒有專門的維修人員來維修,造成了教學資源嚴重的浪費。
本文設計一種以SSM框架為基礎的基于Web應用的實驗室管理系統,以期實現實驗室管理的信息化智能化,最大限度地減少教學資源浪費,提高工作效率的同時也提升了實驗室的利用率。
SSM框架,即Spring + Spring MVC + MyBatis,是當今最受歡迎的應用框架組合,它的設計理念完全符合開源思想和JavaEE的標準。SSM框架具有強大的可擴展性,支持整合其他常用框架,如Dubbo等,可以開發出更強大,耦合度更低的應用系統。
SSM 框架實現了分層思想的技術規范和要求,如在Controller這一層上的設計思想就是一個控制器一個功能,每一層各司其職,層與層間通過接口來進行交互,最大限度降低耦合,提高內聚,增強系統的健壯性、可擴展性和可維護性。
Spring可以說是當今最流行的框架,在國內外各大網站上使用率和支持率都是常年穩居第一,甚至有人說:“在當今社會如果你不懂Spring,就放棄Java”,可見Spring框架在Java開發中的重要地位。Spring是2003年發布的一個輕量級開源框架,它的核心是IoC(控制反轉)和AOP(依賴注入)。在實際開發中,通常都采用分層架構,比如常用的三層架構:Dao層、Service層和Controller層,Spring為每一層都提供了良好的技術支撐和可擴展特性,MyBatis、Hibernate、Log4j、SLF4J等常用框架都可以很好地與Spring進行整合。
Spring MVC是當前最優秀的MVC框架之一,實際開發中用于替代Servlet。自Spring 2.5版本后,支持注解配置功能,易用性有了大幅度的提高。Spring 3.0更加完善,實現了對Struts 2的超越。Spring MVC具有諸多優點,如:與Spring框架無縫集成、提供強大的約定大于配置的契約式編程支持、支持RESTful風格等。Spring MVC的核心是DispatcherServlet,所有的請求都將被它攔截,并且在初始化該 Servlet時就將映射初始化,因此DispatcherServlet可以返回映射之后的視圖。
MyBatis是一個優秀的輕量級數據持久層框架,實現對JDBC的封裝,主要負責數據訪問層的數據庫相關操作[3]。MyBatis使得開發者不需要直接操縱數據庫,開發者可以通過對配置和原生Map使用簡單的XML或注解來實現和數據庫的交互。在實際開發中,MyBatis專注于SQL本身,是一個足夠靈活的Dao層解決方案,適用于對性能要求高,或者需求變化較多的項目。
本系統基于B/S架構,總體上分為用戶管理、實驗室設備管理、實驗室管理、通知管理四大模塊,如圖1所示。為了系統的穩定運行以及項目未來的可擴展性,采用了SSM框架、MySQL以及 Tomcat等主流技術作為本項目的技術棧,旨在打造一個高效的信息化實驗室管理系統。
(1)用戶管理
系統管理員可以創建用戶并進行權限分配,還可以對用戶的相關信息進行增刪改查操作。
(2)實驗室設備管理
主要有購置設備、報廢設備、維修設備、設備出入庫和以圖表展現的設備統計信息等功能。
(3)實驗室管理
實驗室分配管理:當用戶申請使用實驗室時,管理員按照各實驗室的使用情況分配給申請的用戶。
實驗室信息管理:管理員可以新建實驗室并填寫該實驗室的相關信息、修改一個實驗室的相關信息、刪除一個實驗室信息或刪除整個實驗室等操作。
(4)通知管理
通知信息管理:管理員可以對通知進行增刪改查操作。
圖片輪播管理:管理員可以管理首頁的圖片與標題,并將符合條件的通知放到圖片輪播當中。

圖1 系統功能層次圖
(1)實驗室分配管理
用戶通過系統向實驗室提出申請使用后(包括學生預約[4]),系統管理員會根據實驗室的使用情況來分配使用時間段。管理員審批申請后,實驗室使用者會被批注在該時間段中使用實驗室。流程如圖2所示。
(2)實驗排行榜
學生完成實驗后,填寫實驗報告并通過系統進行提交。教師在教師平臺界面查看學生提交的實驗報告并對其批改,批改完后將實驗報告的分數錄入系統中??偡职凑赵搶W生日常在實驗室做實驗的表現分和實驗報告的報告分按比例加起來進行計算??偡直壤梢苑譃?0%表現分和60%報告分、30%表現分和70%報告分兩種。教師錄入成績后,系統會對學生此次的分數進行降序排列,學生可以登錄自己的賬號進行查看此次實驗成績。流程如圖3所示。
(3)購置設備功能
用戶登錄后來到申請界面,系統會自動獲取用戶的工號和姓名作為此次申請購置的負責人,用戶填寫申請表的詳細信息并提交,隨后系統驗證提交的信息是否正確。當信息在后臺檢測通過后,信息會存儲到數據庫中,并通知負責人創建成功。
頁面默認顯示一張表單信息,可以通過頁面中的加號鍵來增加表單項。該功能是通過jQuery去操作 DOM 元素動態的生成HTML,并使用jQuery選擇器來獲取用戶提交的數據。
前臺數據發往后臺:


圖2 實驗室分配流程圖

圖3 排行榜流程圖
(4)統計數據
每一個實驗室都可以通過本功能查看該實驗室中的設備信息,也可以點擊查看全部,那么就會顯示所有實驗室中的設備信息。本功能是通過引入ECharts插件實現的,ECharts上手簡單,只要用戶將數據引入就可自動生成統計圖,能夠提供直觀、生動、可交互、可高度個性化定制的數據可視化圖表[5]。如圖4所示。
核心代碼如下:


圖4 數據統計界面
在實際開發中業務層是很靈活的,不同的業務層實現不同的功能。業務層的存在使得Controller層和Dao層之間沒有直接的聯系,降低了整個系統的耦合度。在業務層可以使用Spring框架的各種功能:IoC、AOP、面向接口編程等。例如可以使用Spring的兩大核心之一的AOP,從橫切面的角度來開發整個系統,對系統進行業務橫向擴展。
在本系統中Spring通過業務層將Dao層對象和設備管理功能聯系起來。例如在設備刪除、設備購買申請等功能中,使用了AOP的技術。代碼如下:

Spring在SSM框架中作為主導框架。本次開發在配置文件中定義了MyBatis資源、配置數據源、配置數據庫的事務管理器、配置生產SqlSessionFactory的工廠等。部分代碼如下:


通過以上代碼就將對象注入到了Spring容器中。當開發者需要用到該對象時,引用該對象的id即可直接使用。Spring改變了以往開發者通過構造方法創建對象的煩瑣,進一步降低了系統內部的耦合,提高內聚,增強了系統的健壯性。
Dao層在實際開發中負責與數據庫進行數據交互,而傳統的JDBC數據庫操作不僅會花費大量的時間在數據交互上,還會降低系統的性能。MyBatis對JDBC進行了封裝,使用了MyBatis后可以減輕開發者編寫SQL語句的工作量。開發者可以在XML配置文件中或者Mapper接口中自定義SQL語句,需要使用事務管理、數據緩存、數據庫訪問等功能時可以直接調用這些功能。在MyBatis中,實體類的屬性名和數據表的字段名默認是需要一一對應,這一約定提高了系統開發的便捷性。
開發中建立MyBatis的持久層是通過配置XML文件來映射對象的。先通過namespace將配置文件和Dao層進行關聯,在對數據庫進行操作時,字段名應該與實體類中的屬性名一一對應。代碼如下:


當實體類的屬性名和數據表的字段名無一一對應時,開發者可以使用MyBatis提供的<resultMap>進行屬性映射。
本文設計了一種以SSM框架為基礎的基于Web應用的實驗室管理系統,詳細地介紹了系統的功能設計及實現過程。系統開發中運用了SSM框架的分層思想的技術規范和要求,縮短了系統的開發周期,最大限度降低耦合,提高系統內聚,增強系統的健壯性、可擴展性和可維護性,讓系統能更好的適應后期業務需求的變化。
系統的每個功能在經過測試后部署運行良好,此次開發采用的是SSM框架和dbcp數據庫連接池,在后續的版本迭代中我們將考慮移植SpringBoot和druid數據庫連接池進行開發,減少配置文件的書寫,而且SpringBoot擁有更人性化的功能設計,更能在SSM框架的基礎上進一步降低系統內部的耦合,提升系統的性能。