jetty可以说是一个基于Handler设计的Web服务器,其通过组合各种Handler实现对请求的处理。所以源码阅读部分先从Handler部分开始,而AbstractHandler是大部分Handler都继承了的父类,因此先了解它的源码。下面先来看下AbstractHandler的类图,了解下它的继承关系。
从类图上就可以看到AbstractHandler实现了LifeCycle和Handler两个接口,所以同时具备这两个类的特性。
对于Handler接口,其实里面主要定义了一个处理请求的handle()方法。
public interface Handler extends LifeCycle, Destroyable
{
//target 请求的目标,一般是个url
//baseRequest 还未包装过的请求
//request 包装之后得到的HttpServletRequest
//response 保证之后得到的HttpServletResponse
//Handler负责对请求进行处理,对外提供的处理请求的就是handle()方法.
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException;
public void setServer(Server server);
public Server getServer();
public void destroy();
}
对于LifeCycle接口这里继承的是其一个子类