Mjoke App 全部开发过程

MJoke APP上架

  1. 小米商店:搜索 mjoke 即可下载。或者点我下载
  2. 360手机应用中心:搜索 mjoke 即可下载。或者点我下载
  3. 豌豆荚手机应用中心:搜索 mjoke 即可下载。或者点我下载

Mjoke界面展示

1

4

实现过程

开发环境

  • JavaSDK: JDK:1.7
  • 服务器端:Myeclipse + Tomcat7.0
  • 数据库:Mysql5.6 + MysqlWorkBench;
  • 客户端:AndroidStudio + SDK19
  • 部署服务器:阿里云 ACE ( 云引擎 ) + 云数据库 RDS ( Mysql ) + 对象存储 ( oss )

服务器端开发

项目结构如下:

  • bean 包为数据库里各个表对象
  • config包为配置包
  • dao为与数据库直接操作的包
  • outjson是每个servlet的对应输出json包
  • servlet是客户端直接请求的地址
  • util则是工具包,可以包含MD5,Base64或者mysql的工厂类等
  • dbconfig.properties则是数据库工厂模式配置文件

实现流程

在本项目里我没有用框架,纯手动自己分类。也有了自己的开发想法 ( 可能别人早就想到了 ),我是在 servelet 里调用 dao 方法处理数据库,输出则调用 outjson 类里的一个方法。所有一个工作流程就是

  1. 新建 servlet 如: LoginServlet
  2. dao 包里只建立唯一一个类叫 DbDao, 在里面添加一个方法比如 isLoginSuc(User u) 返回为 boolean
  3. OutJson 里建立唯一一个类比如就叫 OutJson,里面添加一个方法比如outLoginResult(boolean islogins) 返回 String
  4. Servlet 里接受参数,传参数给 isLoginSuc(), 得到结果,根据返回结果再传参数给 outLoginResult(),得到 json 字符串直接 out.write(str);就行。
  5. jsp 页面写 form 表单,如果请求类型为 post 方法就 method="post",可以用 jsp 测试看看返回结果对不对,是不是 json 类型等,成功后再在 android 里调用,并且尽量在获得结果后Log出来看看结果。

其他说明

  • 数据库的工厂模式网上很多,其实用到的技术就是 jdbc,搜索搜 jdbc 出现的教程应该很多,不想看文字教程的可以看看视频的去 极客学院搜索 jdbc 就有很多,我当时就在里面学习的。当然极客学院有的需要付费的,土豪可以看看,质量确实不错。穷屌丝可以看看 慕课网,里面是完全免费的。

  • 上面讲的是 java 操作数据库,但是不管怎样还得涉及到 mysql 的增删查改,我本地的mysql 是 rar 包安装的,进入查看内容都是同过命令,这个不仅效率不高而且容易出错,所以我用了官方推荐的图形化工具 mysqlworkbench个人推荐: 先在mysqlworkbench里用sql语句操作一遍,成功后再将语句复制到jdbc操作里面,我建议jdbc里用PreparedStatement的.setString(int,str)代替,就是在查询语句里的变量用?代替,然后用setString方法替换

Android客户端开发

项目结构

  • 最主要的是 net 包–网络操作;utiltool 包–工具类;utilview – 自定义view;最后那个是微信分享的。
  • 图片加载显示的我用了Volley框架,这个是google官方给的网络操作框架。视频学习慕课网volley;大神博客AndroidVolley完全解析
  • Net操作封装,我是看了一个完整app开发教程,然后里面有net的封装。360云盘地址http://yunpan.cn/cHfyWp75eJ97K (提取码:3ba2)
  • sqlite操作,建议写两个类,一个DBHelper,一个DBManager。DBHelper创建和更新数据库,继承SQLiteOpenHelper;DBManager调用DBHelper,并且所有的操作都写成一个方法放在DBManager,供外部的Activity调用。参考链接Android Sqlite讲解
  • 开源控件合集:github,大神分享的控件
  • 微信分享:慕课网微信分享视频教程

服务器选择

以下主要介绍这两家的云服务。

  1. 通常所说的服务器就是一个 主机 + 外网ip,也就是一台云主机,相当于一台电脑。百度里叫做 云服务器BCC,阿里里叫做 云服务器ECC。如果对于一要靠 app 发展的一个企业来说,这个是最好的选择,因为所有的控制权都在自己的手里,价格对于企业来说应该还是厚道。
  2. 但是如果对于一个开发员,只想做一个上线后用户不太大,存储不是很大量的人来说,这种服务器就太贵了,一个月最基本的类型需要 80-100元/月 左右吧,百度阿里其实早就考虑到这个问题了,所以推出了应用服务引擎:百度叫做 应用引擎BAE,阿里叫做 云引擎ACE,这个通常作为无存储的 web 引擎,如微信后台这样就是部署在这里面,因为只是提供用户反馈,不需要存储东西的简单引擎。这个价格很便宜百度云 0.4元/天,阿里的可能贵几毛。这个一个月才 12元 很好。
  3. 但是我们的 app 不可不存东西的啊,是吧,比如我这个要存图片,我们是不能再ACE或者BAE 里直接 new File 存图片的,因为首先它的空间很小,每个项目就给你2G,然后它是不可以调出来的,也就是说用户存的图片进去,你不能备份到其他地方了。所以必须有个存储的地方,并且有 api 给我们调用
  4. 百度和阿里也考虑到了,百度提供 对象存储BOS 服务,阿里提供 对象存储OSS服务,这个也挺便宜,但是上传文件需要调用他们提供的api,官方都有的。
  5. 另外数据库我们也是需要的,百度提供 关系型数据库RDS,阿里提供 云数据库RDS,我们可以新建mysql数据库,上传我们的数据库表,把我们的数据库连接设置成他们的就行了
  6. 总结:BCC 或者 ECC 是一台电脑,所有的代码,存储,和数据库都放在那台电脑里,而 应用引擎 则是分布式的,将代码,存储和数据库分开存放,这样使得部署很灵活,易于备份。
  7. 附加:腾讯和新浪其实也有云服务,大家可以看看。云存储的话 七牛云存储也可以的,主要它免费的多,普通用户有一定的免费份额的。另外百度上传时我用git一直上传不上去,用svn就可以,大家注意一下。
苟且一下