Interface Handler
- All Superinterfaces:
Destroyable
,Invocable
,LifeCycle
,Request.Handler
- All Known Subinterfaces:
Handler.Collection
,Handler.Container
,Handler.Singleton
,HandlerContainer
- All Known Implementing Classes:
AbstractHandler
,AbstractHandlerContainer
,BufferedResponseHandler
,ConditionalHandler
,ConditionalHandler.Abstract
,ConditionalHandler.DontHandle
,ConditionalHandler.ElseNext
,ConditionalHandler.Reject
,ConditionalHandler.SkipNext
,ConnectHandler
,ConstraintSecurityHandler
,ContextHandler
,ContextHandlerCollection
,CrossOriginHandler
,DebugHandler
,DefaultHandler
,DelayedHandler
,EagerFormHandler
,EventsHandler
,FastCGIProxyHandler
,GracefulHandler
,GzipHandler
,Handler.Abstract
,Handler.Abstract.NonBlocking
,Handler.AbstractContainer
,Handler.Sequence
,Handler.Wrapper
,HotSwapHandler
,HttpSpiContextHandler
,IdleTimeoutHandler
,InetAccessHandler
,LatencyRecordingHandler
,MovedContextHandler
,PathMappingsHandler
,ProxyHandler
,ProxyHandler.Forward
,ProxyHandler.Reverse
,QoSHandler
,ResourceHandler
,ResourceHandler.ResourceContext
,RewriteHandler
,SecuredRedirectHandler
,SecurityHandler
,SecurityHandler.PathMapped
,Server
,ServletContextHandler
,ServletHandler
,SessionHandler
,SessionHandler
,ShutdownHandler
,SizeLimitHandler
,StateTrackingHandler
,StatisticsHandler
,StatisticsHandler.MinimumDataRateHandler
,ThreadLimitHandler
,TryPathsHandler
,WebAppContext
,WebSocketUpgradeHandler
,WebSocketUpgradeHandler
A Jetty component that handles HTTP requests, of any version (HTTP/1.1, HTTP/2 or HTTP/3).
A Handler
is a Request.Handler
with the addition of LifeCycle
behaviours, plus variants that allow organizing Handler
s as a tree structure.
Handler
s may wrap the Request
, Response
and/or Callback
and
then forward the wrapped instances to their children, so that they see a modified request;
and/or to intercept the read of the request content; and/or intercept the generation of the
response; and/or to intercept the completion of the callback.
A Handler
is an Invocable
and implementations must respect
the Invocable.InvocationType
they declare within calls to
Request.Handler.handle(Request, Response, Callback)
.
A minimal tree structure could be:
Server
`- YourCustomHandler
A more sophisticated tree structure:
Server
`- GzipHandler
`- ContextHandlerCollection
+- ContextHandler (contextPath="/user")
| `- YourUserHandler
|- ContextHandler (contextPath="/admin")
| `- YourAdminHandler
`- DefaultHandler
A simple Handler
implementation could be:
class SimpleHandler extends Handler.Abstract.NonBlocking
{
@Override
public boolean handle(Request request, Response response, Callback callback)
{
// Implicitly sends a 200 OK response with no content.
callback.succeeded();
return true;
}
}
A more sophisticated example of a Handler
that decides whether to handle
requests based on their URI path:
class YourHelloHandler extends Handler.Abstract.NonBlocking
{
@Override
public boolean handle(Request request, Response response, Callback callback)
{
if (request.getHttpURI().getPath().startsWith("/yourPath"))
{
// The request is for this Handler
response.setStatus(200);
// The callback is completed when the write is completed.
response.write(true, UTF_8.encode("hello"), callback);
return true;
}
return false;
}
}
An example of a Handler
that decides whether to pass the request to
a child:
class ConditionalHandler extends Handler.Wrapper
{
@Override
public boolean handle(Request request, Response response, Callback callback)
{
if (request.getHttpURI().getPath().startsWith("/yourPath")
return super.handle(request, response, callback);
if (request.getHttpURI().getPath().startsWith("/wrong"))
{
Response.writeError(request, response, callback, HttpStatus.BAD_REQUEST_400);
return true;
}
return false;
}
}
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
An abstract implementation ofHandler
that is aContainerLifeCycle
.static class
AHandler.Abstract
that implementsHandler.Container
.static interface
AHandler.Container
that can contain multiple otherHandler
s.static interface
AHandler
that contains one or more otherHandler
s.static class
AHandler.Container
that contains an ordered list of childrenHandler
s whoseRequest.Handler.handle(Request, Response, Callback)
method is invoked in sequence on each child until a child returnstrue
.static interface
AHandler.Container
that can contain one single otherHandler
.static class
An implementation ofHandler.Singleton
, which is aHandler.Container
that wraps one single otherHandler
.Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable
Invocable.Callable, Invocable.InvocationType, Invocable.ReadyTask, Invocable.Task
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.server.Request.Handler
Request.Handler.AbortException
-
Field Summary
Fields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking, NOOP
-
Method Summary
Methods inherited from interface org.eclipse.jetty.util.component.Destroyable
destroy
Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle
addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
Methods inherited from interface org.eclipse.jetty.server.Request.Handler
getInvocationType, handle
-
Method Details
-
getServer
@ManagedAttribute(value="The Server instance associated to this Handler", readonly=true) Server getServer()- Returns:
- the
Server
associated with thisHandler
-
setServer
Set theServer
to associate to thisHandler
.- Parameters:
server
- theServer
to associate to thisHandler
-