dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)
一、源代码路径
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端的点餐管理系统)的更多相关文章
- JS判断当前使用设备是pc端还是web端(转MirageFireFox)
js判断当前设备 最近用bootstrap做自适应,发现仍然很难很好的兼容web端和PC端的现实. 仔细观察百度,淘宝,京东等大型网站,发现这些网站都有对应不同客户端的子站. 站点 PC端url we ...
- 移动端与Web端疫情数据展示
1.题目要求 2.整体思想 首先是在前两阶段已经完成的echarts可视化.利用Jsoup爬取疫情数据基础上来进行调用与完善.大致思想是在Android Studio上完成交互去调用ecplise中的 ...
- 1、移动端 2、后台 3、 移动端,Web 端 4、 PC端
移动端: 1.公众号:停开心 住总物业 2.app: iso Android 停开心,住总停开心 后台:停开心智慧停车管理平台(所有的停车场) 移动端,Web端: 海投OA,公司OA PC端:收费软 ...
- 关于emoji表情,支持在app端发送web端显示,web端发送给app端显示,web与wap端互相显示。
要用到emoji.js和emoji.jquery.js两个插件配合实现三端互通. 1.app端发送的emoji表情----到服务器---服务器存储的是‘问号’,无法显示如图所示: 后台的同学也试验了网 ...
- 接口自动化、移动端、web端自动化如何做?
1.<Python+Appium移动端自动化项目实战>-带您进入APP自动化测试的世界https://yuedu.baidu.com/ebook/765b38a5690203d8ce2f0 ...
- 移动端和web端的性能指标
移动端的性能指标: 1.内存:80% 2.CPU 3.流量 4.电量 5.启动速度 6.滑动速度.界面切换速度 7.与服务器交互的网络速度 web端的性能指标: 1.CPU 2.内存 3.网络 4.I ...
- Socket.IO介绍:支持WebSocket、用于WEB端的即时通讯的框架
一.基本介绍 WebSocket是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯.而Socket.IO是一个完全由JavaScript实现.基于Node.js.支持WebSocket ...
- 介绍一个python的新的web framework——karloop框架
karloop是一款轻型的web framework,和tornado.webpy类似.mvc分层设计,眼下已经公布早期版本号了,使用方便, 下载地址例如以下:https://github.com/k ...
- 如何利用cURL和python对服务端和web端进行接口测试
工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使 ...
随机推荐
- BS4爬取豆瓣电影
爬取豆瓣top250部电影 ####创建表: #connect.py from sqlalchemy import create_engine # HOSTNAME='localhost' # POR ...
- win7 无法启动此程序,因为计算机中丢失glut32.dll
http://zhidao.baidu.com/link?url=9NZxqCvR7hvmKuVR1dUSdQB-TTv_re-g7lp-xZj5FKII04FnMvIKjFhKv299t6wv5Ht ...
- 用户空间缺页异常pte_handle_fault()分析--(上)【转】
转自:http://blog.csdn.net/vanbreaker/article/details/7881206 版权声明:本文为博主原创文章,未经博主允许不得转载. 前面简单的分析了内核处理用户 ...
- 使用两个 Windows 窗体 DataGridView 控件创建一个主/从窗体
使用 DataGridView 控件的一种最常见方案是“主/详细信息”窗体,这样的窗体可显示两个数据库表之间的父/子关系.如果选择主表中的行,将导致以相应的子数据来更新详细信息表. 主/详细信息窗体很 ...
- (32)C#文件读写
一.File 类 这是一个静态类,提供用于创建.复制.删除.移动和打开单一文件的静态方法,并协助创建 FileStream 对象 using System.IO; 没有构造函数和属性 写入数据 1. ...
- Python的网络编程[4] -> DHCP 协议[0] -> DHCP 的基本理论
DHCP协议 / DHCP Protocol 目录 DHCP 基本理论 DHCP 通信流程 DHCP 完整报文 DHCP 的 Optional 字段 DHCP 的报文类型 1 DHCP 基本理论 DH ...
- OpenJ_Bailian - 1037 A decorative fence
Discription Richard just finished building his new house. Now the only thing the house misses is a c ...
- [LOJ6277]数列分块入门 1
题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问$A_r$的值.思路: 分块. 对于整块的数据打标 ...
- redis --- lua 脚本实现原子操作
如题, 楼主的想法很简单, lua 脚本本身支持原子性, 所以把命令写进一个脚本就行, 当然后续还会优化才能放到生产上,例如缓存脚本 ,redis 本身会缓存执行过的脚本 ,这样速度更快, 再优化, ...
- Jenkins配置Java项目1(Java+Maven+Tomcat+SVN/Git)
先收集几个网址,后续再自己动手过一遍 http://www.cnblogs.com/leefreeman/p/4211530.html http://www.cnblogs.com/sunzhench ...