How java web server to work
**一个基于java的web服务器使用两个重要的类:java.net.Socket和java.net.ServerSocket,通过http消息与客户端通信,也称为http服务器**。
HTTP超文本传输协议
http,一种协议,允许互联网中服务器与浏览器进行发送与接收数据,是一种请求与响应协议。使用可靠的TCP连接。
在http中,始终都是客户端通过建立连接和发送http请求开启一个事务。服务器不用联系浏览器端。
HTTP请求
一个http请求包含三部分:
1.请求行:方法-URI-协议/版本 POST /example/index.html http/1.1(三部分之间通过回车换行符CRLF分隔开)
2.请求的头部
3.主体内容
HTTP响应
一个http响应包含三部分:
1.状态行:协议/版本 状态码 原因短语 http/1.1 200 OK (三部分之间通过回车换行符CRLF分隔开)
2.响应的头部
3.主体内容
Socket类(java.net.socket)
socket类是网络连接的端点。使得一个应用程序可以从网络读取与写入数据。为了从一个应用程序发送消息到另一个应用,需要知道另一个应用的IP地址和socket端口。
通过调用socket的getOutputStream和getInputStream方法获得OutputStream对象和InputStream对象
socket类常用构造方法:socket(Inetadress address,int port)
ServerSocket类
服务器socket和socket不同,服务器socket的角色是等待来自客户端的连接请求,一般服务器soket获得连接请求,将创建一个socket和客户端进行通信。
常用构造方法:ServerSocket(int port,int backLog,InetAdress Bindingadress)表示监听bindingAdress地址上的端口port。backLog是拒绝开始传入的请求之前,连接请求的最大队列数。
关键方法:accept(),用于监听请求的到来,当请求来到时,创建一个socket与客户端通信。
创建一个简单的Web服务器
servlet容器为一个servlet请求提供服务,基本分三部:
- 创建一个request对象并填充所引用的servlet使用的信息,如参数,头部,uri等等
- 创建一个response对象,所引用的servlet用它给客户端发送响应
- 调用service方法,并传入request和response对象。前者用于取值,后者写值。
将创建web服务器分成三部分
- 创建Request类
- 创建Response类
- 创建HttpServicer类
代码实现见GitHub
新手上路,请多多指教
https://github.com/levyc/OwnWebServer.git