一、源代码路径

https://github.com/weiganyi/dr-helper

二、界面

通过浏览器訪问Web服务,能够看到界面例如以下:

ADT-Bundle编译project生成dr-helper.apk。安装后能够看到应用界面例如以下:

三、背景

Java诞生后主要就是用于Web开发,随着Android的兴起,其在移动领域也应用广泛。我在学习了Java相关的一系列技术后,想找个项目来实际运用一下。因此我考虑能够基于Java相关的技术来构建一个包含移动端和Web端的餐厅管理系统,在这个项目里我会综合运用各种的技术,并尽量使它们贴合使用场景。

这个系统会服务于餐厅里的三类角色。首先是点餐服务员,他们採用手机Android APP来进行点餐操作。其次是厨房的厨师,他们将採用Web服务来获取点的菜品,菜品完毕后能够通过Web服务给点餐服务员发送上菜通知。最后是收银台的管理员,他们也是通过Web服务来进行相关的订单管理,比方付款操作。以及整套系统的其它管理工作。

在技术方案上包含了移动前后端和Web前后端,移动前端就是一个Android应用,移动后端採用Tomcat容器Servlet来提供服务。两者通过JSON消息交换数据,这样可以减少两者交互的数据量。Web后端也是採用的Tomcat容器Servlet来提供服务。然后通过JSP来生成前端Web页面。

在数据库选择上,对于传统关系性较强且数量有限的数据,我选择用Mysql来存储,而对于像订单这样的可能数量巨大的数据,我选择用Mongodb来存储,这样能充分利用各自的长处。

四、功能实现

1、Android端支持例如以下功能

基本功能:登录/注销、主页、查桌、开桌、查单、订单、菜单、点菜、转台、并台、更新、配置

通知功能:空桌通知、上菜通知

2、Web端支持例如以下功能

基础功能:登录/注销

厨房功能:下单菜品管理、完毕菜品管理

柜台功能:订单管理(含结帐。通过单号、桌号查询)、用户管理、餐桌管理、菜单类别管理、菜单管理、配置管理

五、整体设计思路

1、数据库设计

1)当中dr_user表存储用户帐号信息,dr_table表存储餐桌信息,dr_menu_type表存储菜品类型信息。dr_menu表存储菜品信息,dr_option表存储配置选项信息,这5个表为关系型表。使用Mysql数据库存储。

它们的详细字段例如以下:

create tabledr_user(

user_id int(4) not null primary keyauto_increment,

user_name char(255) not null,

user_passwd char(255) not null,

user_auth enum('waiter', 'chef', 'admin')not null);

create tabledr_table(

table_id int(4) not null primary keyauto_increment,

table_num int(4) not null,

table_seat_num int(4) not null,

table_empty int(1) not null);

create tabledr_menu_type(

menu_type_id int(4) not null primary keyauto_increment,

menu_type_name char(255) not null);

create tabledr_menu(

menu_id int(4) not null primary keyauto_increment,

menu_name char(255) not null,

menu_price int(16) not null,

menu_type_id int(4) not null);

create tabledr_option(

option_id int(4) not null primary keyauto_increment,

option_name char(255) not null,

option_value char(255) not null);

2)还剩下一个dr_order为非关系型集合,使用Mongodb数据库存储,包括订单信息,它的结构例如以下:

dr_order:{"id":"xxx", "order":1, "table":1,"waiter":"xxx", "time":"xxx","admin":"xxx", "pay":true,"detail":[{"menu":"xxx", "price":12,"amount":1, "chef":"xxx","finish":true, "remark":"xxx"}]}

3)Mysql和Mongodb数据库的连接參数等信息。存储在后台的properties配置文件。

4)部分数据库存储操作使用了存储过程。这些能够在项目文件夹下的drhelper_db数据库文件夹里的数据库备份文件里能够查看到。

2、Android前端应用设计

1)其每项基本功能都由一个Activity和一个AsyncTask构成,Activity载入布局xml来构造操作界面。

当用户运行某个操作后,须要运行通信对象的JSON序列化,向后台发生HTTP请求。等待HTTP响应,响应消息运行JSON反序列化,依据结果进行反馈处理。这一系列的处理因为有网络通信在当中。实际运行时间可长可短。所以Activity要启动一个AsyncTask线程来运行这些后台操作,以避免Activity运行超过5秒报异常的问题,也吻合界面与逻辑处理要线程分离的通用思想。

2)对于两个通知功能,空桌通知和上菜通知,我须要实现一个消息推送机制,Androidclient须要创建和维持与后台的TCP长连接消息推送通道。

实现方案是这样,用户启用通知订阅后,先创建一个Service,然后在Service里再创建一个线程,这是由于Android的Service可能和Activity处于同一个线程运行,这样的TCP长连接任务须要有独立线程来运行,所以要再启动一个线程。

在这个线程里创建一个与后台推送服务的TCP Socket,发起登录请求消息,并定期发送心跳消息来维持TCP长连接,还要依据Androidclient的通知预定配置发起通知预定请求消息。

当通过这个Socket收到后台的通知推送消息后。再发起HTTP请求去获取详细的通知内容,收到响应后依据通知类型发出对应的Android通知消息。

这里有一些异常情况须要处理,比方当服务端退出时须要检測出来并直接退出Service。这时没有再进行重登录尝试是由于。当服务端退出后除了这个通知服务的登录信息没有外,整个应用的登录信息也没有了,所以这时须要退出整个应用并重登录,当应用重登录后也会再发起通知服务的登录。

另外,当用户依据通知订阅操作界面关闭通知功能时。要能中断通知Service自身。还有由于Android手机可能会杀死后台的服务线程,所以须要在这样的情况下须要发送一个广播消息给Service,由Service又一次拉起服务线程。

3)对于Activity的退出,採用注冊广播接收程序的方式实现。

当用户退出登录时。会发出退出广播,Activity堆栈的各个Activity收到后,就各自退出并销毁自身。Service的退出实现也类似。

4)应用须要频繁读取的两个表是dr_menu_type和dr_menu,而且这两个表不会发生频繁的变化,所以把它们存储一份在Android的SQLite里,这样可以显著的节省与后台的数据交换量,然后通过专门的更新功能。来与后台同步这两个表的数据。在实现上通过ContentProvider机制来封装对底层SQLite的訪问,以实现对业务层接口的友好。

5)对于已经登录的帐号信息,server地址、通知订阅等配置信息,都存储在首选项里,并依据选项菜单进行配置。

3、Web前端设计

1)採用单页式站点风格,点击页面的button或者链接,通过Ajax请求来向后端提交数据。并获取新生成局部页面。最后把局部页面更新到相应的位置。相关的JS操作採用Jquery库来进行。以取得较好的浏览器兼容性。

2)在HTML页面的构造上,採用JSP脚本来完毕。依据后台Servlet逻辑处理完后生成的Java Bean对象,在JSP文件内。通过Java脚本或者JSTL等JSP技术。获取Java Bean对象拼装成所须要的HTML页面。

4、Java后台服务设计

1)通过Tomcat容器的Servlet来进行后台处理。为实现MVC。Servlet里仅仅进行消息内容提取、服务调用和消息转发等控制逻辑,详细的业务逻辑在相应的Service里进行。包含对数据库的操作。

2)对数据库的操作通过一个代理进行,这样可以屏蔽两种数据的差异。给上层以统一的数据操作接口。

3)在消息推送服务后台实现上。採用创建一个servlet的上下文监听器,这样这个监听器就能够在Tomcat容器启动时调用,容器退出时才退出。

再在这个监听器里创建一个线程。这个线程监听一个TCP Socket。当有来自Androidclient的连接时。创建处理连接并管理起来。当业务逻辑触发到有空桌事件或上菜事件时,通过Androidclient的预定通知列表。找到对于的处理连接,发送通知推送消息来通知Androidclient获取详细的通知内容。在与Androidclient的连接维护上,除了须要回应Androidclient的心跳消息外,还须要启动定时器来检測心跳消息的存在,当检測到无心跳消息时表明对应的Androidclient已经异常退出,这时就须要清除这个失效的连接。

4)为了可以在响应消息中传送中文字符。须要设置响应消息的编解码方式为UTF-8,这对于每一个Servlet都须要进行。所以就创建一个过滤器来统一做这个设置。

5)不论是移动端还是Web端,前台用户信息的保存,因为其都是基于HTTP协议进行前后台通信的。所以採用cookie来完毕。在后台处理上。Servlet有封装的session对cookie的处理提供了支持。直接使用即可了。

6)在服务部署上,使用nginx做反向代理,把请求转发到后端的tomcatserver上进行处理。这也是经常使用的部署方式,由于眼下系统文件比較少,所以没有把图片等静态资源放到nginx下这样的动静分离的做法。

六、文件及文件夹介绍

Android\:移动端文件夹

Android\libs\:支持包文件夹

Android\res\drawable-hdpi\:应用的图片文件夹

Android\res\layout\:布局xml文件文件夹

Android\res\menu\:系统菜单布局xml文件文件夹

Android\res\values\:字符串定义文件文件夹

Android\src\com\drhelper\activity\:Activity文件文件夹

Android\src\com\drhelper\activity\AfterLoginActivity.java:登录前Activity通用功能,其它Activity继承这个Activity

Android\src\com\drhelper\activity\BeforeLoginActivity.java:登录后Activity通用功能。继承于AfterLoginActivity,其它Activity继承这个Activity

Android\src\com\drhelper\activity\ChangeTableActivity.java:换台页面的Activity

Android\src\com\drhelper\activity\CheckOrderActivity.java:查单页面的Activity

Android\src\com\drhelper\activity\CheckTableActivity.java:查桌页面的Activity

Android\src\com\drhelper\activity\CreateTableActivity.java:开桌页面的Activity

Android\src\com\drhelper\activity\LoginActivity.java:登录页面的Activity

Android\src\com\drhelper\activity\MainActivity.java:主页面的Activity

Android\src\com\drhelper\activity\MenuActivity.java:菜单显示页面的Activity

Android\src\com\drhelper\activity\OrderActivity.java:订单显示页面的Activity

Android\src\com\drhelper\activity\OrderMenuActivity.java:菜单操作页面的Activity

Android\src\com\drhelper\activity\PrefsActivity.java:偏好配置页面的Activity

Android\src\com\drhelper\activity\UnionTableActivity.java:并台页面的Activity

Android\src\com\drhelper\activity\UpdateActivity.java:更新页面的Activity

Android\src\com\drhelper\bean\:Java Bean对象文件夹

Android\src\com\drhelper\bean\MenuItem.java:菜单显示页面的菜单项Bean

Android\src\com\drhelper\bean\MenuList.java:菜单显示页面的菜单列表Bean

Android\src\com\drhelper\bean\com\:前后台通信的Java Bean对象文件夹

Android\src\com\drhelper\bean\com\EmptyTable.java:查桌页面的通信对象

Android\src\com\drhelper\bean\com\EmptyTableList.java:查桌页面的通信对象

Android\src\com\drhelper\bean\com\Login.java:登录页面的通信对象

Android\src\com\drhelper\bean\com\MenuList.java:更新页面的通信对象

Android\src\com\drhelper\bean\com\MenuTypeList.java:更新页面的通信对象

Android\src\com\drhelper\bean\com\NoticeDetail.java:获取通知的通信对象

Android\src\com\drhelper\bean\com\NoticeHeartBeat.java:通知心跳的通信对象

Android\src\com\drhelper\bean\com\NoticeLogin.java:通知登录的通信对象

Android\src\com\drhelper\bean\com\NoticeLogout.java:通知注销的通信对象

Android\src\com\drhelper\bean\com\NoticePush.java:通知消息的通信对象

Android\src\com\drhelper\bean\com\NoticeSubscribe.java:通知预定的通信对象

Android\src\com\drhelper\bean\com\OneTableOneOrder.java:包括一个桌号和一个订单号的通信对象。可用于多处

Android\src\com\drhelper\bean\com\OrderInfo.java:订单信息的通信对象

Android\src\com\drhelper\bean\com\TwoTableOneOrder.java:包括两个桌号和一个订单号的通信对象,可用于多处

Android\src\com\drhelper\entity\:数据库对象文件夹

Android\src\com\drhelper\entity\Detail.java:订单集合中detail字段相应的对象

Android\src\com\drhelper\entity\Menu.java:菜单表相应的对象

Android\src\com\drhelper\entity\MenuType.java:菜单类型表相应的对象

Android\src\com\drhelper\entity\Order.java:订单集合相应的对象

Android\src\com\drhelper\provider\MenuProvider.java:菜单和菜单类型表的ContentProvider封装实现

Android\src\com\drhelper\service\NoticeService.java:通知服务client实现

Android\src\com\drhelper\task\:AsyncTask实现文件夹

Android\src\com\drhelper\task\ChangeTableTask.java:换台功能的任务

Android\src\com\drhelper\task\CheckOrderTask.java:查单功能的任务

Android\src\com\drhelper\task\CheckTableTask.java:查桌功能的任务

Android\src\com\drhelper\task\CreateTableTask.java:开桌功能的任务

Android\src\com\drhelper\task\DeleteOrderTask.java:删除订单功能的任务

Android\src\com\drhelper\task\LoadOrderTask.java:订单载入功能的任务

Android\src\com\drhelper\task\LoginTask.java:登录功能的任务

Android\src\com\drhelper\task\SubmitOrderTask.java:提交订单功能的任务

Android\src\com\drhelper\task\UnionTableTask.java:并台功能的任务

Android\src\com\drhelper\task\UpdateTask.java:更新功能的任务

Android\src\com\drhelper\util\CookieManager.java:Cookie功能实现

Android\src\com\drhelper\util\DialogBox.java:提示框功能实现

Android\src\com\drhelper\util\HttpEngine.java:HTTP通信机制实现

Android\src\com\drhelper\util\PrefsManager.java:偏好管理对象

Server\:服务端文件夹

Server\drhelper_db\drhelper_mysql_db.sql:Mysql数据库备份文件

Server\drhelper_db\drhelper_mongodb\drhelper\:Mongodb数据库备份文件文件夹

Server\tomcat\jsp\:JSP文件文件夹

Server\tomcat\res\drhelper.css:项目的CSS文件

Server\tomcat\res\drhelper.js:项目的JS文件

Server\tomcat\res\jquery-1.10.1.js:Jquery库的JS文件

Server\tomcat\WEB-INF\lib\:支持包文件夹

Server\tomcat\WEB-INF\src\DBConfig.properties:数据库配置信息文件

Server\tomcat\WEB-INF\src\com\drhelper\android\:Android后台服务实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\android\bean\NoticeEvent.java:通知服务内部使用的通知事件对象

Server\tomcat\WEB-INF\src\com\drhelper\android\bean\UserSocketChannel.java:通知服务内部使用的username和连接映射对象

Server\tomcat\WEB-INF\src\com\drhelper\android\bean\com\:前后台通信的Java Bean对象文件夹。与Android文件夹中相应文件夹同样

Server\tomcat\WEB-INF\src\com\drhelper\android\listener\NoticeServerListener.java:通知服务上下文监听器实现

Server\tomcat\WEB-INF\src\com\drhelper\android\server\NoticeServer.java:通知服务后台实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\:Android后台业务逻辑实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\android\service\ChangeTableService.java:换台功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\CheckOrderService.java:查单功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\CheckTableService.java:查桌功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\CreateTableService.java:开桌功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\DeleteOrderService.java:删除订单功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\GetNoticeService.java:获取通知功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\LoadOrderService.java:载入订单功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\LoginService.java:登录功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\LogoutService.java:注销功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\Service.java:后台业务逻辑抽象类

Server\tomcat\WEB-INF\src\com\drhelper\android\service\SubmitOrderService.java:提交订单功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\UnionTableService.java:并台功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\UpdateMenuService.java:更新功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\service\UpdateMenuTypeService.java:更新功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\:Android后台控制逻辑Servlet实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\ChangeTableServlet.java:换台功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\CheckOrderServlet.java:查单功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\CheckTableServlet.java:查桌功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\CreateTableServlet.java:开桌功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\DeleteOrderServlet.java:删除订单功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\GetNoticeServlet.java:获取通知功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\LoadOrderServlet.java:载入订单功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\LoginServlet.java:登录功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\LogoutServlet.java:注销功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\SubmitOrderServlet.java:提交订单功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\UnionTableServlet.java:并台功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\UpdateMenuServlet.java:更新功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\servlet\UpdateMenuTypeServlet.java:更新功能Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\android\util\LogicException.java:程序逻辑异常对象

Server\tomcat\WEB-INF\src\com\drhelper\android\util\TypeConvert.java:String和ByteBuffer对象转换辅助类

Server\tomcat\WEB-INF\src\com\drhelper\common\:后台通用功能实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\common\db\DataBase.java:数据库基类

Server\tomcat\WEB-INF\src\com\drhelper\common\db\DBManager.java:数据库操作代理对象

Server\tomcat\WEB-INF\src\com\drhelper\common\db\MongoDB.java:Mongodb数据库操作对象

Server\tomcat\WEB-INF\src\com\drhelper\common\db\MysqlDB.java:Mysql数据库操作对象

Server\tomcat\WEB-INF\src\com\drhelper\common\entity\:数据库对象文件夹,与Android文件夹中相应文件夹同样

Server\tomcat\WEB-INF\src\com\drhelper\common\filter\ServletFilter.java:Servlet过滤器实现

Server\tomcat\WEB-INF\src\com\drhelper\web\:Web后台服务实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\:用于给JSP页面提供数据的Java Bean对象文件夹

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminMenu.java:菜单管理页面菜单对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminMenuObject.java:菜单管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminMenuTypeObject.java:菜单类型管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminOptionObject.java:配置管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminOrder.java:订单管理页面订单对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminOrderObject.java:订单管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminTableObject.java:餐桌管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\AdminUserObject.java:用户管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\FinishMenu.java:完毕菜品管理页面菜品对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\FinishMenuObject.java:完毕菜品管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\IndexObject.java:首页对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\LoginObject.java:登录对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\LogoutObject.java:注销对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\OrderMenu.java:下单菜品管理页面菜品对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\OrderMenuObject.java:下单菜品管理页面对象

Server\tomcat\WEB-INF\src\com\drhelper\web\bean\PageInfo.java:页号对象

Server\tomcat\WEB-INF\src\com\drhelper\web\service\:Ajax后台业务逻辑实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxAdminMenuService.java:菜单管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxAdminMenuTypeService.java:菜单类型管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxAdminOptionService.java:配置项管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxAdminOrderService.java:订单管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxAdminTableService.java:餐桌管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxAdminUserService.java:用户管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxFinishMenuService.java:完毕菜品管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxLoginService.java:登录功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxLogoutService.java:注销功能业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\AjaxOrderMenuService.java:下单菜品管理业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\IndexService.java:首页业务逻辑实现

Server\tomcat\WEB-INF\src\com\drhelper\web\service\Service.java:业务逻辑抽象接口

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\:Ajax后台控制逻辑Servlet实现文件夹

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxAdminMenuServlet.java:菜单管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxAdminMenuTypeServlet.java:菜单类型管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxAdminOptionServlet.java:配置项管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxAdminOrderServlet.java:订单管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxAdminTableServlet.java:餐桌管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxAdminUserServlet.java:用户管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxFinishMenuServlet.java:完毕菜品管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxLoginServlet.java:登录功能控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxLogoutServlet.java:注销功能控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\AjaxOrderMenuServlet.java:下单菜品管理控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\servlet\IndexServlet.java:首页控制逻辑Servlet实现

Server\tomcat\WEB-INF\src\com\drhelper\web\util\ServiceUtil.java:业务逻辑辅助功能类

Server\tomcat\WEB-INF\src\com\drhelper\web\util\ServletUtil.java:Servlet控制逻辑辅助功能类

七、部署方法

1、源代码下载后。用Eclipse编译Server文件夹下的服务端源代码,用adt-bundle编译Android文件夹下的移动端源代码。

2、在server上安装部署Nginx和Tomcat,配置Nginx把全部请求转发到Tomcat。同一时候安装部署好Mysql和Mongodb。

3、在tomcat/webapps下建立项目文件夹drhelper。然后把Server/tomcat文件夹编译生成的文件复制到drhelper下。

4、把Server/ drhelper_db文件夹下的数据库备份文件分别导入Mysql和Mongodb。

5、把Android文件夹下编译生成的apk文件安装到手机上。

6、通过手机上的应用能够正常訪问系统的移动部分,使用服务员角色相关功能,同一时候通过浏览器也能够訪问系统的Web部分,使用厨师和管理员角色相关功能。

(完)

dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)的更多相关文章

  1. JS判断当前使用设备是pc端还是web端(转MirageFireFox)

    js判断当前设备 最近用bootstrap做自适应,发现仍然很难很好的兼容web端和PC端的现实. 仔细观察百度,淘宝,京东等大型网站,发现这些网站都有对应不同客户端的子站. 站点 PC端url we ...

  2. 移动端与Web端疫情数据展示

    1.题目要求 2.整体思想 首先是在前两阶段已经完成的echarts可视化.利用Jsoup爬取疫情数据基础上来进行调用与完善.大致思想是在Android Studio上完成交互去调用ecplise中的 ...

  3. 1、移动端 2、后台 3、 移动端,Web 端 4、 PC端

    移动端: 1.公众号:停开心 住总物业 2.app:  iso Android 停开心,住总停开心 后台:停开心智慧停车管理平台(所有的停车场) 移动端,Web端: 海投OA,公司OA PC端:收费软 ...

  4. 关于emoji表情,支持在app端发送web端显示,web端发送给app端显示,web与wap端互相显示。

    要用到emoji.js和emoji.jquery.js两个插件配合实现三端互通. 1.app端发送的emoji表情----到服务器---服务器存储的是‘问号’,无法显示如图所示: 后台的同学也试验了网 ...

  5. 接口自动化、移动端、web端自动化如何做?

    1.<Python+Appium移动端自动化项目实战>-带您进入APP自动化测试的世界https://yuedu.baidu.com/ebook/765b38a5690203d8ce2f0 ...

  6. 移动端和web端的性能指标

    移动端的性能指标: 1.内存:80% 2.CPU 3.流量 4.电量 5.启动速度 6.滑动速度.界面切换速度 7.与服务器交互的网络速度 web端的性能指标: 1.CPU 2.内存 3.网络 4.I ...

  7. Socket.IO介绍:支持WebSocket、用于WEB端的即时通讯的框架

    一.基本介绍 WebSocket是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯.而Socket.IO是一个完全由JavaScript实现.基于Node.js.支持WebSocket ...

  8. 介绍一个python的新的web framework——karloop框架

    karloop是一款轻型的web framework,和tornado.webpy类似.mvc分层设计,眼下已经公布早期版本号了,使用方便, 下载地址例如以下:https://github.com/k ...

  9. 如何利用cURL和python对服务端和web端进行接口测试

    工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使 ...

随机推荐

  1. 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

    转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] ...

  2. 菜单栏选中时CSS3过渡效果

    (如有错敬请指点,以下是我工作中遇到并且解决的问题) 效果图: 未点击时: 点击后: HTML代码: <ul> <li class="active">菜单1 ...

  3. hdu 5105(数学题)

    Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. nginx安全日志分析脚本的编写

    https://blog.csdn.net/nextdoor6/article/details/51914966

  5. easyui常用

    清空列表选中项 //easyui datagrid 清空勾选 $('#List').datagrid('clearSelections'); 扩展修改查询方法 function QueryList() ...

  6. 我在16ASPX下了一个系统是ACCESS和VS2005做的我想把那个连接数据库的'DB_16aspx'的名字改了进不了了可是?

    靠,在web.config或者其他配置文件中把数据库连接字符串改称你的新名字不就行了

  7. NYOJ 21.三个水杯-初始态到目标态的最少次数-经典BFS

    题目传送门:biubiubiu~ 三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子. ...

  8. BFS+最小生成树+倍增+LCA【bzoj】4242 水壶

    [bzoj4242 水壶] Description JOI君所居住的IOI市以一年四季都十分炎热著称. IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有 ...

  9. HDU 5916: Harmonic Value Description

    题目描述 The harmonic value of the permutation $p_1,p_2,\cdots p_n$ is$$\sum_{i=1}^{n-1} gcd(p_i.p_{i+1} ...

  10. php的function() use($args)用法

    使用use返回 aaa aaa.使用函数传参数aaa bbb. use的参数必须是已经存在的,如果没有定义返回Notice: Undefined variable: word ,使用函数参数方式不需要 ...