MJoke APP上架
Mjoke界面展示
实现过程
开发环境
- 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 类里的一个方法。所有一个工作流程就是
- 新建 servlet 如: LoginServlet ;
- 在 dao 包里只建立唯一一个类叫 DbDao, 在里面添加一个方法比如 isLoginSuc(User u) 返回为
boolean
- 在 OutJson 里建立唯一一个类比如就叫 OutJson,里面添加一个方法比如outLoginResult(boolean islogins) 返回
String
- 在 Servlet 里接受参数,传参数给 isLoginSuc(), 得到结果,根据返回结果再传参数给 outLoginResult(),得到
json
字符串直接 out.write(str);就行。 - 在 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,大神分享的控件
- 微信分享:慕课网微信分享视频教程
服务器选择
以下主要介绍这两家的云服务。
- 通常所说的服务器就是一个 主机 + 外网ip,也就是一台云主机,相当于一台电脑。百度里叫做 云服务器BCC,阿里里叫做 云服务器ECC。如果对于一要靠 app 发展的一个企业来说,这个是最好的选择,因为所有的控制权都在自己的手里,价格对于企业来说应该还是厚道。
- 但是如果对于一个开发员,只想做一个上线后用户不太大,存储不是很大量的人来说,这种服务器就太贵了,一个月最基本的类型需要 80-100元/月 左右吧,百度阿里其实早就考虑到这个问题了,所以推出了应用服务引擎:百度叫做 应用引擎BAE,阿里叫做 云引擎ACE,这个通常作为无存储的 web 引擎,如微信后台这样就是部署在这里面,因为只是提供用户反馈,不需要存储东西的简单引擎。这个价格很便宜百度云 0.4元/天,阿里的可能贵几毛。这个一个月才 12元 很好。
- 但是我们的 app 不可不存东西的啊,是吧,比如我这个要存图片,我们是不能再ACE或者BAE 里直接 new File 存图片的,因为首先它的空间很小,每个项目就给你2G,然后它是不可以调出来的,也就是说用户存的图片进去,你不能备份到其他地方了。所以必须有个存储的地方,并且有 api 给我们调用
- 百度和阿里也考虑到了,百度提供 对象存储BOS 服务,阿里提供 对象存储OSS服务,这个也挺便宜,但是上传文件需要调用他们提供的api,官方都有的。
- 另外数据库我们也是需要的,百度提供 关系型数据库RDS,阿里提供 云数据库RDS,我们可以新建mysql数据库,上传我们的数据库表,把我们的数据库连接设置成他们的就行了
- 总结:BCC 或者 ECC 是一台电脑,所有的代码,存储,和数据库都放在那台电脑里,而 应用引擎 则是分布式的,将代码,存储和数据库分开存放,这样使得部署很灵活,易于备份。
- 附加:腾讯和新浪其实也有云服务,大家可以看看。云存储的话 七牛云存储也可以的,主要它免费的多,普通用户有一定的免费份额的。另外百度上传时我用git一直上传不上去,用svn就可以,大家注意一下。