Connectors 是侦听传入连接的组件。
Handlers 是用于处理所有请求的低级码头机制。
Jetty 将所有有效请求(有一类请求只是对 HTTP 的使用不当,并可能导致 400 Bad Request 之类的事情)发送到在 Server.getHandler() 注册的任何内容
有许多类型的函数特定处理程序,选择最适合您需求的一种并从中扩展,或者将您的处理程序包装在更通用的方法中。
典型的服务器设置为具有 HandlerList 或 HandlerCollection 来指示可能行为的列表。
每个处理程序都被(按顺序)命中,如果该处理程序决定它想要做它可以做的事情。
如果一个处理程序确实产生了一些东西,那么对baseRequest.setHandled(true); 的调用用于告诉 Jetty 在当前处理程序之后不再处理任何处理程序。
至于如何将某些处理程序限制到某些连接器,这是通过 virtualhosts 机制完成的。
VirtualHosts 是一个融入ContextHandler 特定处理程序的概念,因此您需要将自定义处理程序包装在ContextHandler 中以获得VirtualHosts 的好处。
要使用它,您可以使用Connector.setName(String) 命名您的连接器,然后在ContextHandler 的VirtualHosts 定义中使用@{name} 语法来指定只有该命名的连接器可以用于为特定的ContextHandler 提供服务.
例子:
ServerConnector httpConnector = new ServerConnector(server);
httpConnector.setName("unsecured"); // named connector
httpConnector.setPort(80);
ContextHandler helloHandler = new ContextHandler();
helloHandler.setContextPath("/hello");
helloHandler.setHandler(new HelloHandler("Hello World"));
helloHandler.setVirtualHosts(new String[]{"@unsecured"});