一个简单的servlet容器实现(1)

引言和框架


写了几个用 Servlet 实现的 Web 服务器,直到前段时间才发现其实一直停留在新手的应用阶段,在一个学长的建议下开始尝试自己实现一个简易Servlet容器(类似于简易Tomcat)。


大致框架:
随着进一步的深入会不断进行修改,目前的意向的版本框架如下:

这里写图片描述


大致工作内容:

  • 创建一个 request 对象

    • 填充可能被所引用的 servlet 使用的信息,如参数、头部、URI
    • HTTP 请求
      • 方法–URI–协议/版本
      • 请求的头部
        • 每一个头部通过一个CRLF来分割
      • 主体内容
        • 头部和主体内容之间有一个 CRLF
  • 创建一个 response 对象

    • 所引用的 servlet 使用它来给客户端发送响应
    • HTTP 响应
      • 方法–URI–协议/版本
      • 响应的头部
      • 主体内容
  • 调用 servletservice 方法

    • 这个是 servlet 自带的五个主要方法中的一个,也是 servlet 生命周期的第二阶段:主要是从request 对象取值然后给response对象写值
    • 生命周期方法:init -> service -> destroy。也代表了servlet 的声明周期,从初始化到有请求的时候的service,最后释放servlet(一般发生在servlet容器关闭或者需要更多的空闲内存时候)

大致的工作流程:

  • 等待HTTP请求
  • 对每次请求,构造一个requestresponse的实例
  • 当调用servlet的时候,加载该servlet类并调用servletinit 方法(仅一次),传递requestresponse
  • 当调用的是静态资源,则调用StaticResourceProcessor,也需要传递requestresponse
  • servlet的销毁

一个Servlet容器中的一个Web服务器:

这里写图片描述


git地址https://github.com/Outliwer/SimpledWebContainer

猜你喜欢

转载自blog.csdn.net/qq_34861102/article/details/79915762