基于Android和JavaEE订餐系统的设计与实现
1 引言(Introduction)
随着计算机和通信设备网路技术的不断发展,人们对移动设备特别是Android移动终端开发出功能强大、界面美观且操作简易的应用程序提出了更高的要求[1]。JavaEE是当前比较流行的Web服务应用框架[2],Android移动终端如何与JavaEE服务器端进行数据交互成为新的研究热点[3]。随着人们工作的繁忙、生活节奏的加快、有部分人没有充足的时间到餐馆或者酒店就餐,他们希望通过智能手机在网上进行订餐。如何利用基于Android的智能手机终端开发移动App,向顾客提供一种便捷、高效的餐饮服务具有重要的现实意义和广泛的应用价值。文献[4—7]虽然设计并实现了基于Android平台的订餐系统,但服务器端采用普通的Servlet控制器与Android客户端进行数据交互,对后期服务器的扩展具有一定的局限性,同时服务器端与手机客户端数据交互采用xml文件格式,数据传输效率有待提高。文献[8]虽然服务器端采用的是WebService与手机客户端进行数据交互,但对订餐后台管理系统的架构研究较少,因此,本文提出并实现了一种基于Android和JavaEE的手机订餐系统,服务器端采用Struts2+Spring4+Hibernate4+DWR整合框架,该整合框架可以提高后台管理系统的用
户使用体验,手机客户端与服务器端的数据交互采用JSON格式,可以提高网络数据的传输效率。该系统是对现有订餐系统的一种补充,对类似系统的开发具有一定的参考价值。
2 系统设计(Design of system)
2.1 系统功能总体设计
基于Android和JavaEE的订餐系统包含基于Android的手机订餐模块和基于JavaEE的订餐后台管理模块。基于Android的手机订餐模块包括顾客登录和厨师登录。顾客登录成功后可以浏览菜品、添加购物车、查看我的订单,以及对菜品进行评价。
基于javaweb的美食食谱网站厨师登录成功后可以浏览订单、修改菜品制作状态。基于JavaEE的订餐后台管理模块包括系统管理、菜品类别管理、菜谱管理、订单管理、菜品留言管理、菜品评价管理和结算管理等功能。系统总体功能设计如图1所示。
2.2 系统架构总体设计
系统架构总体设计采用Android手机客户端访问JavaEE服务器端的C/S架构与订餐后台管
理系统通过Web浏览器访问JavaEE服务器端的B/S架构相结合的架构模式,其中,JavaEE服务器端直接访问应用数据库进行数据存取,并将数据返回给Android手机客户端和Web浏览器。系统总体架构如图2所示。
整个系统的数据执行流程为服务器端的订餐后台管理系统通过Web浏览器向服务器端请求存取数据操作如添加菜品类型和菜谱信息,服务器端接收请求数据后将数据存入数据库,并将存入数据库中的数据返回服务器端,服务器端再将数据返回浏览器。Android手机客户端要显示菜品信息需要联网请求服务器,服务器再根据需求访问数据库,数据库系统处理完数据后将数据返回服务器端,服务器端将数据转换成Json格式后再返回给Android手机客户端。从整个系统数据流的执行过程来看,Android手机客户端和Web浏览器共用了JavaEE服务器端从而完成了数据的交互。
2.3 系统服务器架构设计
从系统总体设计的数据流执行过程来看,Android手机客户端和Web浏览器共用了同一个服务器端,因此服务器端的架构设计就显得尤为重要。在JavaEE平台下,服务器端的架构大都采用三层架构,比较典型的框架有采用MVC模式的Jsp+Servlet+JavaBean、Struts+
Spring+Hibernate(SSH)和Struts2+Spring4+Hibernate4(SSH2)。其中Jsp+Servlet+JavaBean框架虽然采用MVC模式将显示层、控制层和模型层分开,但由于Servlet和JavaBean负责了大量的运算和业务处理工作,程序处理效率较为低下。SSH框架虽然也将视图层、控制器与模型的彻底分开,但由于Struts框架存在线程安全、捕获输入较难,以及视图展示都弱于Struts2框架等问题[9],因此本系统服务器端的架构方案采用SSH2整合框架,整个系统架构设计如图3所示。
在Struts2+Spring4+Hibernate4整合框架中,Struts2主要用于Web展示和业务控制,Spring4主要用于业务实现和事务管理,而Hibernate4则用于数据持久化处理。在Struts2中Web浏览器请求服务器端的JSP页面,JSP调用Struts2中的Action完成数据的交互,而手机客户端则直接调用Struts2中的Action完成数据的交互。不论是Web端的JSP请求Struts2中的Action还是手机客户端请求Struts2中的Action,都需要通过l配置文件实现业务处理或页面跳转等动作。Action最终将业务层的执行结果返回给Web浏览器或者手机客户端。Spring4负责处理业务逻辑及事务管理,并将Struts2层传递过来的数据依赖注入到持久层。在持久层中,Hibernate4是一个功能强大的ORM工具,它主要包括对数据源的配置、POJO组件以及DAO组件的管理,处理DAO组件的数据,并将处理结果返
回给业务层,业务层再将数据返回给表示层,最终通过浏览器或者手机客户端展示数据。
3 系统实现(Implementation of system)
3.1 订餐系统服务器端数据封装
在基于JavaEE的订餐后台管理系统中,服务器端数据的封装既可以是JSON数据格式也可以是XML数据格式,由于JSON数据格式封装的数据在网络传输与解析中优于XML数据[10],因此在本系统中服务器端的数据采用JSON封装。JSON即JavaScript Object Natation,它主要用于Web服务器与JavaScript或者手机客户端进行交互的一种纯文本的数据处理格式。该数据处理格式既可以处理字符串类型、数字类型、布尔类型、数组类型,也可以处理对象。在项目开发中,可以将字符串String、Object对象、JavaBean对象、List集合、数组对象、Map集合、Set集合等按照一定的算法封装成JSON格式的数据。在本系统开发中,服务器首先从数据库服务器获取数据,然后将数据存入List集合中,再将List集合中的数据封装成JSON数据格式,List集合数据封装成JSON格式数据的主要实现代码如下: