前言
本次新型冠状病毒的疫情,给本该红火的新年和激情洋溢的2020盖上了一层阴影。作为普通人的我,只能做到听党和国家的话,不添乱,老老实实在家呆着。处理完公司日常工作之余,想着把相关的一些零散知识串联一下,看了一些tomcat相关的架构设计和源码,于是就想,干脆自己尝试写一个简单的server吧。如果你也有兴趣,那我们就开始吧。
本次项目涉及到的一些知识点:
1、http;
2、java反射;
3、java IO;
4、xml解析;
5、Servlet;
6、html基础知识;
7、多线程;
8、java网络编程;
9、NIO
让我们先从一个最基本的java应用开始。曾经有个同事跟我吹嘘,用nodejs几行代码就能搞出一个server来对外提供应用,我们看看用java怎么做:
目标:从浏览器输入一个地址,服务器给我一个反馈信息。
一、http协议
我们的目标是通过浏览器来验证我们的服务器工作状况,所以需要先了解一下基本的http协议。我们先随便来抓一个包看看,http
都包含哪些东西。现在我们就从浏览器F12看一下吧, 后面换成Fiddler来进行查看数据请求的情况,一步步来。
上图中general下包含的就是请求的原始信息,包含了请求方法为Get,请求的url,请求状态,以及远程地址等信息。下方的Response Headers则代表着服务器返回给浏览器的数据的头部信息,也就是说,服务器要给我浏览器返回数据,首先要满足我的协议格式要求,不然ServerA给我返回一个格式,ServerB返回另一个,明天来个C,D,E,F。。好嘛,你们一人一个格式,要把我浏览器累死啊,干脆,大家约定一个格式,你们按