Inspired by nginx's try_files functionality.
This handler can be configured with a list of rewrite URI paths.
The special token $path represents the current request
pathInContext (the portion after the context path).
Typical example of how this handler can be configured is the following:
TryPathsHandler tryPathsHandler = new TryPathsHandler();
tryPathsHandler.setPaths("/maintenance.html", "$path", "/index.php?p=$path");
PathMappingsHandler pathMappingsHandler = new PathMappingsHandler();
tryPathsHandler.setHandler(pathMappingsHandler);
pathMappingsHandler.addMapping(new ServletPathSpec("*.php"), new PHPHandler());
pathMappingsHandler.addMapping(new ServletPathSpec("/"), new ResourceHandler());
For a request such as /context/path/to/resource.ext:
pathInContext to
/maintenance.html and forwards the request to the next handler,
where it matches the / mapping, hitting the ResourceHandler
that serves the file if it exists.pathInContext to
/path/to/resource.ext and forwards the request to the next handler,
where it matches the / mapping, hitting the ResourceHandler
that serves the file if it exists.pathInContext to
/index.php?p=/path/to/resource.ext and forwards the request to
the next handler, where it matches the *.php mapping, hitting
the PHPHandler.The original path and query may be stored as request attributes,
under the names specified by setOriginalPathAttribute(String)
and setOriginalQueryAttribute(String).
| Modifier and Type | Field and Description |
|---|---|
| private static final Logger | |
| private String | |
| private String | |
| private List |
| Access | Constructor and Description |
|---|---|
| public | |
| public |
| Modifier and Type | Method and Description |
|---|---|
| public String | Returns: the attribute name of the original request pathGet the attribute name of the original request path. |
| public String | Returns: the attribute name of the original request queryGet the attribute name of the original request query. |
| public List | |
| public boolean | handle(Request
the HTTP request to handle request, Response the HTTP response to handle response, Callback the callback to complete when the handling is complete callback)Overrides org. Implements org. Invoked to handle the passed HTTP request and response. |
| private String | |
| public void | setOriginalPathAttribute(String
the attribute name of the original
request path originalPathAttribute)Sets the request attribute name to use to retrieve the original request path. |
| public void | setOriginalQueryAttribute(String
the attribute name of the original
request query originalQueryAttribute)Sets the request attribute name to use to retrieve the original request query. |
| public void | |
| private Request |
| LOG | back to summary |
|---|---|
| private static final Logger LOG | |
| originalPathAttribute | back to summary |
|---|---|
| private String originalPathAttribute | |
| originalQueryAttribute | back to summary |
|---|---|
| private String originalQueryAttribute | |
| paths | back to summary |
|---|---|
| private List<String> paths | |
| TryPathsHandler | back to summary |
|---|---|
| public TryPathsHandler() | |
| TryPathsHandler | back to summary |
|---|---|
| public TryPathsHandler(Handler handler) | |
| getOriginalPathAttribute | back to summary |
|---|---|
| public String getOriginalPathAttribute() Get the attribute name of the original request path.
| |
| getOriginalQueryAttribute | back to summary |
|---|---|
| public String getOriginalQueryAttribute() Get the attribute name of the original request query.
| |
| getPaths | back to summary |
|---|---|
| public List | |
| handle | back to summary |
|---|---|
| public boolean handle(Request request, Response response, Callback callback) throws Exception Overrides org. Implements org. Doc from org. Invoked to handle the passed HTTP request and response. The request is accepted by returning true, then handling must be concluded by completing the passed callback. The handling may be asynchronous, i.e. this method may return true and complete the given callback later, possibly from a different thread. If this method returns false, then the callback must not be invoked and any mutation on the response reversed. Exceptions thrown by this method may be subsequently handled by an error The simplest implementation is:
public boolean handle(Request request, Response response, Callback callback)
{
callback.succeeded();
return true;
}
A HelloWorld implementation is:
public boolean handle(Request request, Response response, Callback callback)
{
response.write(true, ByteBuffer.wrap("Hello World\n".getBytes(StandardCharsets.UTF_8)), callback);
return true;
}
| |
| interpolate | back to summary |
|---|---|
| private String interpolate(Request request, String value) | |
| setOriginalPathAttribute | back to summary |
|---|---|
| public void setOriginalPathAttribute(String originalPathAttribute) Sets the request attribute name to use to retrieve the original request path.
| |
| setOriginalQueryAttribute | back to summary |
|---|---|
| public void setOriginalQueryAttribute(String originalQueryAttribute) Sets the request attribute name to use to retrieve the original request query.
| |
| setPaths | back to summary |
|---|---|
| public void setPaths(List<String> paths) Sets a list of rewrite URI paths. The special token | |
| tryPath | back to summary |
|---|---|
| private Request tryPath(Request wrapped, String newPathQuery) | |