您的位置:首页 > 其它

简单servlet容器的实现原理

2017-04-17 17:52 260 查看


程序执行步骤

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

这里,servlet容器的UML图如下所示: 
 

 
   
  应用程序入口点在HttpServer1中,创建一个ServerSocket等待客户端的请求。每次请求成功时创建一个Request对象和Response对象。并根据需求分发到StaticResourceProcessor或者ServletProcessor实例中。(若请求的是静态资源则发送到StaticResourceProcessor,如果是一个servlet则发送到ServletProcessor1中)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: