您的位置:首页 > 移动开发 > Android开发

自己动手——快速搭建Android应用服务器

2017-05-08 11:33 323 查看

Motivation

我写这套帖子的目的,是在自己学会、实现并熟练掌握之后,想帮助下面将会提到的这样一群正在学习Android的新手(虽然我自己也是新手),通过自己的经验传递出去,让他们少走一点弯路,节省大量用在查询和翻阅资料的时间。

我在学习编写自己的Android应用程序服务器的时候遇到过以下的问题:

1.我需要准备什么?

2.我该选择哪一套实现方案?

……

这些问题的搜索和查证都需要占用大量的时间,以至于新手们手头的项目可能长达几个月没有进展,而我会一一为大家解决这些问题,你只需要花费看这一篇帖子的时间。

这套贴子适合以下人群:

1.Android单机程序已经写得很6,想给自己的程序(参赛作品或者毕设什么的)添加服务器支持的新手;

2.被团队中分配去搭建测试服务器,想做但不会的新手(需要会写Java)。

如果满足以上任意一条,那么恭喜你,这套帖子正是你要找的!

好了,言归正传:

一、我需要准备什么?

硬件要求:一台联网的电脑(一般情况下是自己的PC)

软件要求:安装JDK并配置完环境变量

还有一些软件是需要用到的,到了具体的章节我们再引入。

知识储备要求:

1.比较熟练的Java编程能力:

对于上述第1类人群,不会Java是说不通的。

对于上述第2类人群,博主本人是用Java编写的服务器端程序,你不想学Java也得去学PHP什么的,关键是这种一整套的教程也不好找。

2.计算机网络基础知识:

对以下概念有较清晰的认识即可(不清楚的借一本计算机网络或者分条去查都可以快速搞明白):

①内网与外网;

②局域网;

③IP地址;

④端口号;

⑤Http请求;

3.数据库相关知识:不会的必须找本书仔细学习一下。这个就不是随便查查就能懂的了。且有的知识(如范式)逻辑性较强,需要花时间认真学习。

二、我该选择哪一套方案?

在具有了一台联网电脑这一硬件条件后,我们的服务器仅仅有了一个容器,真正能让它工作起来的是一套软件相关的东西,那么我们就会去查,但是很遗憾,我们查到的99%的结果是网站服务器搭建,且帖子1说A+B+C可以实现服务器,帖子2又说A+D+E可以实现服务器……各种帖子又抛出了一堆的框架。对于新手来说,我就是交个毕设,或者仅仅需要支持一两个用户(自己和团队成员)的测试服务器,需要这么多概念吗?作为新手到底应该学什么?

以上的问题并非捏造,确实是博主在未学会之前面临到的问题,那么既然我已经学会了,就给大家一个“标答”:

我们用:MySQL(免费的数据库)+Java Web(遵循Java语言格式的服务器项目,客户端发来的请求的管理与应答者)+Tomcat(服务器软件)+Volley(Google官方的Http请求库,用来写在Android客户端,向服务器端发送请求)来实现我们的服务器。

三、Android客户端发送Http请求和接收到应答的流程

我来描述一下从Android客户端发出一趟请求到收到应答的过程(没图,但是我会说到各种图往往笼统和忽略的部分):

1.客户端调用Volley请求函数向指定IP地址(或域名)的服务器发出一条Http请求(例如包含账号和密码的登录请求);

2.服务器容器Tomcat收到Http请求,寻找相应Java Web编写的服务器应用程序,把请求分派给它来处理;

3.Java Web编写的服务器应用程序找到处理请求相应的Servlet(Java Web项目的一部分,后面会讲)实例,把请求分配给它处理;

4.Servlet根据请求来执行相应的操作(如调用数据库然后验证登录是否成功),根据结果产生应答,将结果添入应答中,发回客户端;

5.客户端接收到应答,从应答中解析出结果(如登录是否成功),然后根据结果执行相应的逻辑(如跳转页面或提示账号密码不正确等)。

四、开始实现

实现的部分,我想分到多个帖子去分别讲各个部分的实现及其衔接。因此,下面用我每次测试自己APP时的流程来做个索引:

1.打开内网穿透软件——内网穿透(2017.05.12);

http://blog.csdn.net/Mr_Megamind/article/details/71747410

2.打开服务器软件和数据库软件——服务器、数据库集成开发工具包的介绍,Java Web的编写,MySQL数据库的建立,Tomcat的一些使用方式;

①服务器、数据库集成开发工具包(2017.05.13);

http://blog.csdn.net/mr_megamind/article/details/71791028

②Java Web的编写(2017.05.15);

http://blog.csdn.net/mr_megamind/article/details/72123869

③MySQL数据库的建立(2017.5.18);

http://blog.csdn.net/Mr_Megamind/article/details/72505148

④Tomcat的一些使用方法(2017.05.19);

http://blog.csdn.net/Mr_Megamind/article/details/72565730

3.打开手机上的APP,开始运行——Volley请求的编写(2017.07.01);

http://blog.csdn.net/Mr_Megamind/article/details/74048891

更新日志

这篇综述和索引的帖子我就写到这了,去写几个分贴了,写出来之后我会第一时间在这里挂上链接,敬请期待。

我的这套帖子应该会在两周左右全部写完,如果是有紧急的问题需要帮助的朋友,直接回帖或者给我发邮件,在时间充足和我会的情况下帮你解决。

——2017.05.08

实在是有些忙,今天忙里偷闲一天,写完了内网穿透的帖子,已经在上面挂上了链接。我仔细想了一下,上面第二步可能需要三个帖子分别来讲服务器、数据库集成开发工具包的介绍,Java Web的编写和Tomcat的使用,之前吹牛说两周写完可能做不到了

——2017.05.12

今早写了服务器、数据库集成开发工具包这篇文章,已经在上面挂上了链接。

——2017.05.13

今天开始写Java Web的编写,写了之后才发现,这个确实挺麻烦的,各种细节需要各种截图,已
4000
经在上面挂上了链接,没写完,可以先看看前面的准备部分。

——2017.05.15

今晚终于抽空写完了Java Web的编写,诸君可以照葫芦画瓢,写自己的服务器程序了,帖子有点长,进下心来慢慢看吧,绝对有收获!今天写着写着,又想到我好像没有规划MySQL建数据库的部分,就在索引中添上了。

——2017.05.17

今天写完了MySQL数据库的建立,已经在上面挂上了链接。

——2017.05.18

今天把Tomcat的一些使用方法写完了,写着写着突然忘了本来准备的内容了,略尴尬。

——2017.05.19

今天终于把原计划的这最后一篇文章写完了,已经在上面挂上了链接。原本计划两周写完的,这都拖了将近一个多月了。但是最近真的很忙,没办法。

近期如果有空,我会写一篇番外文章,讲一点关于JSONObject和JSONArray的东西,应该会比较短,但是会很有用,尽请期待吧!

——2017.07.01

根据各位开发者看完这套帖子之后在开发过程中的反馈,今天对《内网穿透》、《Tomcat》和《Java Web》等三帖做了一些更新。

——2018.03.11

后记

目前,我们的网络知识体系对Android初学者实在是太不友好了,想学习适用于Android客户端的服务器端编程,真的是太不容易。首当其冲的问题就是不好查,查到自己想要的知识相当不容易,各位大神写的也很零散。你写这一部分,他写那一部分,有的时候根本拼凑不到一起。反之,查“网站服务器端”这类的关键字信息量又大,质量还都不错。因此我说我们的网络知识体系对Android初学者实太不友好,也因此,我在自己辛苦求索,花了近半个月把这一套东西弄通之后,写下了这一套帖子。目的在于给和我处境类似的初学者们一些指引,让他们少走一些弯路。

另外,相较于理论,我更注重于应用,可能这些文章中有很多概念上说的不到位的地方,请多多包涵。

如发现了代码或者操作方面的错误,请直接回复,我会尽快修改博文,避免误导了初学者。

如果在实现中出现什么问题,我的邮箱是implementist@outlook.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息