简单servlet容器的实现原理

来源:互联网 发布:开淘宝网店计划书 编辑:程序博客网 时间:2024/05/19 13:58

程序执行步骤

  1. 创建一个ServerSocket对象;
  2. 调用ServerSocket对象的accept方法,等待连接,连接成功会返回一个Socket对象,否则一直阻塞等待;
  3. Socket对象中获取InputStream和OutputStream字节流,这两个流分别对应request请求和response响应;
  4. 处理请求:读取InputStream字节流信息,转成字符串形式,并解析,这里的解析比较简单,仅仅获取uri(统一资源标识符)信息;
  5. 处理响应(分两种类型,静态资源请求响应或servlet请求响应):如果是静态资源请求,则根据解析出来的uri信息,从WEB_ROOT目录中寻找请求的资源资源文件, 读取资源文件,并将其写入到OutputStream字节流中;如果是Servlet请求,则首先生成一个URLClassLoader类加载器,加载请求的servlet类,生产servlet对象,执行service方法(往OutputStream写入响应的数据);
  6. 关闭Socket对象;
  7. 转到步骤2,继续等待连接请求;



这里,servlet容器的UML图如下所示: 
 这里写图片描述 
   
  应用程序入口点在HttpServer1中,创建一个ServerSocket等待客户端的请求。每次请求成功时创建一个Request对象和Response对象。并根据需求分发到StaticResourceProcessor或者ServletProcessor实例中。(若请求的是静态资源则发送到StaticResourceProcessor,如果是一个servlet则发送到ServletProcessor1中)
0 0