实验室管理系统的设计与实现
2017-05-09喻晗,刘威
喻 晗,刘 威
(武汉大学 物理科学与技术学院,湖北 武汉 430072)
实验室管理系统的设计与实现
喻 晗,刘 威
(武汉大学 物理科学与技术学院,湖北 武汉 430072)
根据目前实验室资源需要合理分配与利用的需求,设计与实现了一种稳定方便的多平台实验室管理系统。该系统采用Spring mvc作为服务端核心框架,利用MongoDB存储购物实验室的资源信息与人员信息,Web端页面采用AngularJS将所有信息展现出来。同时为了满足便携式的需求,加入Android客户端方便参与实验室管理。最后,通过实际应用证明了此系统的可行性与实用价值。
Spring mvc;AngularJS;MongoDB;Android;实验室管理
随着高等教育对学生的科研和实践能力的要求不断提高,作为大学教育中理论和实践联系的纽带,高校实验室得到越来越多的重视。 然而,目前高校实验室的管理仍然存在着资源利用不合理,管理起来不方便等问题[1]。搭建一个智能化的实验室管理系统对于一个高校实验室显得至关重要[2]。
文中主要基于Java语言设计一套集实验室信息展示、资源预约、实验指导和实验留言等一系列功能的实验室管理方案,并且同时支持Web端和Android客户端操作,满足多平台的使用。
1 相关技术简介
1.1MVC框架
MVC模式(Model-View-Controller)是一种经典的软件架构模式。它主要通过分离模型(Model)、视图(View)及控制器(Controller)在应用程序中的角色从而将业务逻辑从界面中解耦[3]。其中,模型负责封装应用程序数据。视图仅仅负责与用户交互,展示模型数据,不包含任何业务逻辑。控制器作为前两者的联系纽带,主要负责接收用户的请求,通过调用后台服务来完成相应的业务逻辑,可能还会返回一些数据在视图层展示[4]。
1.2 AngularJS框架
AngularJS是 Google设计和开发的开源前端JavaScript框架,旨在克服HTML在构建应用上的不足[5],通过使用特殊的标签来配合它完成了一系列兼容性良好并且可扩展的服务,包括数据绑定、DOM操作、MVC设计模式和模块加载等[6]。
1.3 MongoDB数据库
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是介于RDBMS和NoSQL之间的“集合型”数据库,支持的数据结构松散自由,可以存储较复杂的数据类型[7],可应用于各种规模的企业的应用程序[8]。
1.4 Android 平台
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备[9]。Android最大的优势之一就是其开放性,吸引着大量的开发者,同时Android平台提供了十分宽泛、自由的开发环境。丰富的软件应用使得Android系统在移动端拥有相当大的市场占有率[10]。
2 系统设计
系统总体框架:系统主要分为3个部分,分别是服务器、数据库和客户端 (包括Web客户端和Android客户端)。客户端向服务器发出HTTP请求,服务器调用业务逻辑从数据库中取出数据,然后根据不同请求做出相应的响应。系统整体框架如图1所示。
图1 系统框架图
整个系统是基于用户请求的框架。如图2所示,当用户通过Web浏览器输入网址发出请求时,前端控制器通过正确路由,委托请求给相应的处理器。处理器会从数据库中调用业务对象,从而获得数据模型,然后将数据与视图一并返回前端控制器。此时前端控制器将数据和视图交于AngularJS绑定,绑定之后获得的页面就呈现给用户。这就是一个完整的Web客户端与服务器的交互过程[11]。
当Android客户端向服务器发出请求时,类似与图2流程,只是Android客户端请求的是服务器提供的API(Application Programming Interface,应用程序编程接口),服务器将数据从数据库中取出,不用将数据与视图绑定,直接将数据作为响应交给Android客户端,Android客户端再将数据呈现在手机界面上。
图2 Web客户端与服务器交互流程
3 系统实现
系统的具体实现也可以从3个部分实现,下面分别讲述3个部分的实现的关键点。
3.1 服务器的实现
服务器的核心框架选用Spring MVC框架,因此它的关键点就在与Spring MVC框架的配置[12]。
3.1.1 DispatcherServlet配置
Spring MVC框架中的DispatcherServlet是一个Java Servlet,可以将用户的HTTP请求委派到对应的处理程序,实现的具体配置如下:
3.1.2 ViewResolver配置
ViewResolver即视图解析器。针对Web客户端的请求,它会将逻辑视图ModelAndView解析成真正的视图View对象。
上述代码表示将使用JSP视图,且JSP存放路径为 “/WEB_INF/jsp”。在控制器中使用代码段return “viewname”,会在ViewResolver的作用下将viewname.jsp视图作为响应返还给用户。
3.1.3 响应Web客户端请求
@Controller注解表示将此类标注成控制器类,再配合@RequestMapping注解对请求进一步分流,通过ViewResolver解析之后返回给请求端。如下代码实现对 “/home”访问路径的请求返回home.jsp页面。
3.1.4 响应Android客户端请求
服务端想要提供API接口给Android客户端时,可以使用@ResponseBody注解使得响应直接返回JSON或者其他数据格式,如下代码实现将数据库中取出的实验室仪器数据直接作为响应数据。
3.2 数据库实现
MongoDB支持复杂的数据类型,比如JSON格式。MongoDB可以很方便的将JSON数据插入数据库,具体的实现代码如下:
以上代码可以将包含商品信息staff.json文件插入laboratory数据库中的staffs集合中。
同时,想要从MongoDB中读取数据也很简单。mongo-java-driver.jar包提供了相应的API函数[13]:
MongoCollection.find(eq("name",staffname))
上述代码实现了查找姓名是staffname的人员信息,并将查找结果以JSON形式返回。
3.3 Web 客户端实现
Web客户端主要采用AngularJS来实现双向绑定,简单来说,就是从界面的操作能实时反映到数据,数据的变更能实时展现到界面[14]。下面代码就是实现将数据库中取出的数据与页面p标签元素绑定:
<p ng-bind=”instruction”></p>
在p标签所在的controller内进行模型与界面的双向绑定
$scope.instruction=dataFromMongoDB;
除此之外,AngularJS还可以很轻松的实现JSONArray的遍历,将遍历结果显示在页面上,具体实现代码如下
上述代码实现了将instruments遍历,显示出每个仪器的名称和预览照片。
3.4 Android 客户端实现
Android与服务器通信主要采用Google研发的Volley[15]网络通信框架。上述代码获得的RequestQueue是一个请求队列对象,可以缓存多个HTTP请求,然后按照一定的算法并发的发出请求。接下来创建一个JsonObject Request向服务器提出一个请求。
上述代码表示以GET方式向指定服务器url发出请求,其中listener和errorListener分别可以监听请求成功和请求失败的响应。
接下来将此请求添加到请求队列中,然后调用start()方法执行该请求。
然后将从服务器获得的JSON数据解析之后显示在Android客户端的界面上,从而达到实验室资源信息的展示。
同时Volley还提供了ImageRequest请求[16],将图片响应请求按上述流程加入队列然后start即可实现图片的网络加载。
另外,将Request.method改成POST即可实现客户端POST请求,重写getParams()方法可以在POST请求中添加请求参数。
4 系统应用展示
系统的Android客户端[17-18]的主要应用界面如图3所示,图中分别展示了信息展示、资源预约、实验指导和实验留言4个场景(分别对应于图中左上、右上、左下和右下)。
图3 Android客户端界面
5 结束语
文中通过对目前实验室管理系统的分析,结合现有的框架知识,设计和实现了一种智能化多平台的实验室管理系统。系统框架分离业务逻辑和界面显示,降低耦合度,便于系统的后期维护和功能扩展。存储数据采用高性能数据库,易于存储大量的实验数据。同时为了适应移动互联网的趋势,增加手机移动端。并且通过具体使用展示了此系统的实用价值。今后将进一步关注整个系统的运行效率,优化系统性能,提高用户体验,增加系统的安全性。
[1]周勇,李荣华,陈华,等.信息技术环境下地方高校实验室管理研究[J].时代教育,2016(1):35.
[2]李艳华.提高远程实验教学质量的探索[J].高校实验室工作研究,2013(2):102-103.
[3]Gupta P,Bari P,Govil M C.Spring Web MVC Framework for rapid open source J2EE application development:a case study[J].Interface,2010,2(6):1684-1689.
[4]薛峰,梁锋,徐书勋,等.基于Spring MVC框架的Web研究与应用[J].合肥工业大学学报:自然科学版,2012,35(3):337-340.
[5]董英茹.简谈 AngularJS在下一代 Web开发中的应用[J].软件工程师,2015(5):30-31.
[6]Green B,Seshadri S.AngularJS [M].O'Reilly Media,Inc.,2013.
[7]LiuY, WangY,JinY.Research onthe improvement of MongoDB Auto-Sharding in cloud environment[C]//Computer Science&Education(ICCSE),2012 7th International Con-ference on. IEEE,2012:851-854.
[8]谢华成,马学文.MongoDB数据库下文件型数据存储研究[J].软件,2015,36(11):12-14.
[9]卓炜.基于Android操作系统的软件开发及应用的探讨[J].电子技术与软件工程,2013(23):104-104.
[10]刘仙艳.移动终端开放平台—Android[J].信息通信技术,2011,4:40-50.
[11]舒礼莲.基于 SpringMVC的 Web应用开发[J].计算机与现代化,2013(11):167-168.
[12]Cosmina I.Spring MVC[M].Pivotal Certified Spring Web Application Developer Exam.Apress,2015: 53-150.
[13]Vohra D.Using a Java Client with MongoDB[M]// Pro Mon-goDB Development.Apress,2015:1-37.
[14]Chaniotis I K,Kyriakou K I D,Tselikas N D. Proximity:A Real-Time,Location Aware Social Web Application Builtwith Node.js and AngularJS[M]//Mobile Web Information Systems. Springer Berlin Heidelberg,2013:292-295.
[15]孟远.Android网络通信框架Volley的解析和比较[J].软件,2014(12):66-68.
[16]Shulin Y, Jieping H. Research and implementation ofWeb Servicesin Android network communication framework Volley[C]// Service Systems and Service Management(ICSSSM),2014 11th International Conference on.IEEE,2014:1-3.
[17]宋玉琴,姬引飞,段俊瑞,等.基于Android和ZigBee的智能家居系统设计[J].西安工程大学学报,2015(4):442-446.
[18]毛德明,张轩雄.基于ZigBee与Android技术的智能网关设计[J].电子科技,2016(10):118-121.
Design and implementation of laboratory management system
YU Han,LIU Wei
(School of Physics and Technology,Wuhan University,Wuhan 430072,China)
According to the actual needs of distributing and using the resources in laboratory more reasonably,a robust and convenient multi-platform laboratory management system was designed and implemented.This system uses Spring mvc as the core framework in the server-side,and stores information of resources and staffs in the MongoDB database,then shows the data in the web client via AngularJS.Meanwhile,in order to meet the needs of portable,Android client can also participate in laboratory management easily.Finally,The practical application proved the feasibility and value in use of this system.
Spring mvc;AngularJS;MongoDB;Android;laboratory management
TN919
:A
:1674-6236(2017)01-0001-05
2016-04-19稿件编号:201604191
国家自然科学基金(81272443);国家自然科学国家重点项目(51132001)
喻 晗(1992—),男,湖北武汉人,硕士研究生。研究方向:计算机软件。