Jerrymouse Server设计目标如下:
- 支持Servlet 6的大部分功能:
- 支持Servlet组件;
- 支持Filter组件;
- 支持Listener组件;
- 支持Sesssion(仅限Cookie模式);
- 不支持JSP;
- 不支持async模式与WebSocket; 可部署一个标准的Web App; 不支持同时部署多个Web App; 不支持热部署。
请求
GET /hello HTTP/1.1
Host: www.example.com
User-Agent: curl/7.88.1
Accept: */*
响应
HTTP/1.1 200 OK
Server: Simple HttpServer/1.0
Date: Fri, 07 Jul 2023 23:15:09 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 22
Connection: keep-alive
<h1>Hello, world.</h1>
HTTP Server实际上就是:
监听TCP端口,等待浏览器连接; 接受TCP连接后,创建一个线程处理该TCP连接:
- 接收浏览器发送的HTTP请求;
- 解析HTTP请求;
- 处理请求;
- 发送HTTP响应; 重复1~4直到TCP连接关闭。