sunlabs.brazil.server
public class FileHandler extends Object implements Handler
The following configuration parameters are used:
/foo
then the the file
[root]/foo/bar.html
will be delivered
in response to the url /bar.html
.
mimePatterns=.x* .a? mime.x*=text/xml mime.a?=application/octet-streamThe types corrosponding to mime patterns are searched for in mimePattern order, first looking for
prefix.mime.pattern
then
mime.pattern
. If neither property exists,
then the type is invalid.
The FileHandler sets the following entries in the request properties as a side-effect:
This handler supports a subset of the http range
header of the form
range bytes=[start]-[end]
, where start and end
are byte positions in the file, starting at zero. A large or
missing end value is treated as the end of the file. If a valid
range
header is found, the appropriate
content-range
header is returned, along with the partial
contents of the file.
Version: 2.8
Field Summary | |
---|---|
static String | MIME |
static String | ROOT |
String | urlPrefix |
static String | UNKNOWN |
Method Summary | |
---|---|
static String | getMimeType(String name, Properties props, String prefix)
Get the mime type based on the suffix of a String. |
boolean | init(Server server, String prefix)
Initialize the file handler.
|
boolean | respond(Request request)
Find, read, and deliver via http the requested file.
|
static void | sendFile(Request request, File file, int code, String type)
Send a file as a response. |
static void | setModified(Properties props, long mod)
Set the "lastModified" request property. |
static String | urlToPath(String url)
Helper function to convert an url into a pathname. |
props
. If neither entry is found, then mime
glob pattern are used, if available. If there is no suffix,
then the empty string is used.
If the mime type is set to the special string "unknown", then the type is unknown. This allows specific types to be undefined when glob patterns are used.
If the property "prefix.mimePatterns" (or "mimePatterns") exists, then it specifies a white-space delimited set of glob style patterns for matching file suffixes to types. If a match for a specific file suffix fails, then the property "mime.[pattern]" is used for type comparisons.
The entries:
mimePatterns=*ml mime.*ml=text/xmlwould associate the type "text/xml" with the file foo.html, foo.xml and foo.dhtml. The entries:
mimePatterns=* mime*=application/octet-stream mime.config=unknownWould set the types for all file types not otherwise defined to be "application/octet-stream", except that files ending in ".config" would have no type (e.g. they would generate a file not found error).
Parameters: name The string to compute the mime type for props The properties to look up the mime types in.
Returns: The type (or null if not found).
UNKNOWN: prefix The properties prefix for the name lookup
Returns: The file handler always returns true.
root
is used as the document root.
The document root is recalculated for each request, so an upstream
handler may change it for that request.
For URL's ending with "/", the server property default
(normally index.html) is automatically appended.
If the file suffix is not found as a server property
mime.suffix
, the file is not delivered.Parameters: request The request object fileHandle The file to output type The mime type of the file
Parameters: props Where to find the "lastModified" property mod The modidied time, in ms since the epoch
URL(String)
collapses all "/.." (and "/.") sequences,
except for a trailing "/.." (or "/."), which would lead to the
possibility of escaping from the document root.
File.getPath
in jdk-1.1 leaves all the "//" constructs
in, but it collapses them in jdk-1.2, so we have to always take it
out ourselves, just to be sure.
Parameters: url
The file path from the URL (that is, minus the "http://host"
part). May be null
.
Returns: The path that corresponds to the URL. The returned value begins with "/". The caller can concatenate this path onto the end of some document root.