相对于001部分所说的web服务器,该服务器的搭建简单实现了对servlet请求的支持。
该服务器主要由五个类组成
- -1:HttpServer类
- -2:Request类
- -3:Response类
- -4:StaticResourceProcessor类
- -5:servletProcessor类
Servlet的service方法从Servlet容器中接受一个javax.Servlet.ServletRequest实例和一个javax.Servlet.ServletRequest实例,也就是说对于每一个HTTP请求,Servlet容器都必须构造一个servletRequest和一个servletResponse对象。
因此与001中的不同的是Request和Response类要实现javax.servlet.ServletRequest接口,只有这样才能将request和response对象传递给servlet的service方法。因为001中不用传参给servlet所以不必实现该接口。
当处理servlet请求时基本思路是从request对象中获取Uri—>解析Uri中是否有/servlet—>然后用URL对象生成资源库地址的字符串—>根据URL加载资源库的资源—>从Uri中解析出servlet的名字—>加载servlet类—>实例化servlet类,并将request和response参数传递给servlet对象的service方法。
(详情参考源码)