引言和框架
写了几个用 Servlet
实现的 Web
服务器,直到前段时间才发现其实一直停留在新手的应用阶段,在一个学长的建议下开始尝试自己实现一个简易Servlet
容器(类似于简易Tomcat
)。
大致框架:
随着进一步的深入会不断进行修改,目前的意向的版本框架如下:
大致工作内容:
创建一个
request
对象- 填充可能被所引用的
servlet
使用的信息,如参数、头部、URI
等 HTTP
请求
- 方法–
URI
–协议/版本 - 请求的头部
- 每一个头部通过一个
CRLF
来分割
- 每一个头部通过一个
- 主体内容
- 头部和主体内容之间有一个
CRLF
- 头部和主体内容之间有一个
- 方法–
- 填充可能被所引用的
创建一个
response
对象- 所引用的
servlet
使用它来给客户端发送响应 HTTP
响应
- 方法–
URI
–协议/版本 - 响应的头部
- 主体内容
- 方法–
- 所引用的
调用
servlet
的service
方法- 这个是
servlet
自带的五个主要方法中的一个,也是servlet
生命周期的第二阶段:主要是从request
对象取值然后给response
对象写值 - 生命周期方法:
init
->service
->destroy
。也代表了servlet
的声明周期,从初始化到有请求的时候的service
,最后释放servlet
(一般发生在servlet
容器关闭或者需要更多的空闲内存时候)
- 这个是
大致的工作流程:
- 等待
HTTP
请求 - 对每次请求,构造一个
request
和response
的实例 - 当调用
servlet
的时候,加载该servlet
类并调用servlet
的init
方法(仅一次),传递request
和response
- 当调用的是静态资源,则调用
StaticResourceProcessor
,也需要传递request
和response
servlet
的销毁
一个Servlet
容器中的一个Web
服务器:
git
地址:https://github.com/Outliwer/SimpledWebContainer
扫描二维码关注公众号,回复:
2644080 查看本文章