网站后台——快速搭建Java应用服务器
Motivation
我写这系列博文的目的,是在自己学会、实现并熟练掌握之后,想帮助正在学习的人门,通过将自己的经验传递出去,让你们少走一点弯路,节省大量用在查询和翻阅资料上的时间。
我在学习编写自己的服务器程序的时候遇到过以下的问题:
1.我需要准备什么?
2.我该选择哪一套实现方案?
…
这些问题的搜索和查证都需要占用大量的时间,以至于初学者们手头的项目可能长达几个月没有进展,而我会一一为大家解决这些问题,你只需要花费看这一篇博文的时间。
好了,言归正传:
一、什么是前后端分离?
即前后端代码分别开发并独立部署。
前端: 实现静态/动态页面,必要时向后端发起http请求,并根据后端的响应结果对页面进行刷新或跳转。
后端: 后端不再负责处理对静态资源的请求,仅提供请求接口,在收到前端发来的请求时给与响应。
二、我需要准备什么?
硬件要求:
一台开发机和一台云服务器,当前各大云服务提供商的云服务器产品十分便宜,甚至有大学生优惠。每月不超过10块,所以推荐租一台Linux系统的云服务器,省去了很多麻烦(后续会有帖子介绍流程)。
软件要求:
安装JDK并配置完环境变量 (本系列博文统一采用JDK 1.8)
还有一些软件是需要用到的,到了具体的章节我们再引入。
知识储备要求:
1.基础Java知识和基础Java编程能力:
也不需要对Java有多么深的理解,但是Java面向对象的三大要素——封装、继承、多态——至少要理解得清清楚楚!如果连静态方法和非静态方法都搞不清楚,那还怎么写程序?!
2.计算机网络基础知识:
对以下概念有较清晰的认识即可:
①内网与外网;②局域网;③IP地址;④端口号;⑤Http请求;
3.数据库相关知识:
时间充分的话还是强烈建议系统学习,因为没有学好可能以后写出的查询语句效率低下还不知道怎么优化。时间紧迫的话,会常用的建库、建表、创建字段、增删改查即可。
三、我该选择哪一套方案?
在具有了一台云服务器这一硬件条件后,我们的服务器仅仅有了一个容器,真正能让它工作起来的是一套软件相关的东西。
在本系列博文中,我们用:MySQL + Java Web + Tomcat来实现我们的服务器。
其中:
①MySQL是开源的数据库软件;
②Java Web是遵循Java语言风格的服务器应用程序组件(即客户端发来的请求的应答者);
③Tomcat是开源的服务器软件(作为Java Web应用程序的容器)。
四、开发部署流程
在Windows、Mac等有UI界面的机器上做开发。
开发完成后,将工程打包成.jar或.war文件,称为jar包或war包。
将jar包或war包上传到服务器上进行解包——称作“部署”。
由于开发时需要做一定的测试,每次测试都部署一遍会消耗大量时间和精力。因此,开发机上也需要装MySQL数据库和Tomcat服务器容器。
五、客户端发送Http请求和接收到应答的流程
我来描述一下从各客户端发出一趟请求到收到应答的过程(没图,但是我会说到各种图往往笼统和忽略的部分):
1.客户端向指定IP地址(或域名)的服务器发出一条Http请求(例如包含账号和密码的登录请求);
2.服务器容器Tomcat收到Http请求,寻找相应Java Web编写的服务器应用程序,把请求分派给它来处理;
3.Java Web编写的服务器应用程序找到处理请求相应的Servlet(Java Web项目的一部分,后面会讲)实例,把请求分配给它处理;
4.Servlet根据请求来执行相应的操作(如调用数据库然后验证登录是否成功),将结果添加到应答中,发回客户端;
5.客户端接收到应答,从应答中解析出结果(如登录是否成功),然后根据结果执行相应的逻辑(如跳转页面或提示账号密码不正确等)。
六、基础实现
实现的部分,我分到了多篇博文中去讲各个部分的实现及其衔接:
1. 构建开发环境——安装集成开发工具包XAMPP
2. 调试入门——如何快速定位并修复Bug
3. Web开发入门——创建Java Web工程
4. 部署和测试
七、初级进阶
到这里,我们实现了基础的请求/响应流程,但要实现完善的后端服务,还需要学习一些进阶知识:
1. 数据管理——创建并通过Java连接MySQL数据库
2. 数据传输——JSONObject与JSONArray
3. Servlet请求调度器——DispatcherServlet
4. Q&A
系统环境差异造成的异常
软件版本差异造成的异常
八、中级进阶
学习了前面的这些知识,并做了一些实践,实际上学习成本不高,但是实现成本比较高。这些都是10多年前开发者们实现Java Web后端程序的方法和过程。
看到这里你可能有点失落:“学了半天,居然是10多年前的老方法”。我自然会讲现在的新技术,但前面的过程也是必不可少的,理由如下:
一步一步进阶学习的过程比较平稳,不至于被新技术的复杂知识体系吓住。
老技术学习成本低,但实现成本高,适合快速学习。
进阶学习的过程可以使我们知道,老技术为何被放弃,新技术的优越性有哪些。
总之,技术的革新都是为了不断地解放生产力,让我们用更少的代码实现更多的功能,热爱学习和实现的你,耐心地往下看吧。
1. 依赖管理进阶——Maven学习笔记
Maven学习笔记(一)——综述篇
Maven学习笔记(二)——配置篇
Maven学习笔记(三)——中央仓库与依赖管理篇
Maven学习笔记(四)——部署篇
2. 初识框架——Spring学习笔记
Spring学习笔记(一)——综述篇
Spring学习笔记(二)——基础篇
Spring学习笔记(三)——配置篇
Spring学习笔记(四)——IoC进阶篇
Spring学习笔记(五)——配置信息进阶篇
Spring学习笔记(六)——AOP篇(上)
Spring学习笔记(七)——AOP篇(下)
Spring学习笔记(八)——数据访问篇
Spring学习笔记(九)——Spring MVC篇
Spring学习笔记(十)——Spring Retry篇
九、高级进阶
这个部分,我是想写SpringBoot的,记得当时进阶学习也就用了两天,因此从Spring Framework进阶到SpringBoot是很快的。Spring Framework中我们扔掉了web.xml,Spring Boot中我们连配置文件也不要了。写后端服务更加便捷。
后记
几年前,我在自己辛苦求索,花了近半个月把这一套东西弄通之后,写下了这一系列博文。目的在于给和我处境类似的初学者们一些指引,让大家少走一些弯路。
如果发现了代码或者理论方面的错误,请直接回复,我会尽快修改博文,避免误导了大家。
————————————————
版权声明:本文为CSDN博主「IMplementist」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Mr_Megamind/article/details/71404618