Class TemplateHandler
- All Implemented Interfaces:
Handler
TemplateHandler reads a template file from
the document root, based on the URL, and passes the content through
one or more template filters.
The following configuration parameters are used to initialize this
Handler:
- prefix, suffix, glob, match
- Specify the URL that triggers this handler.
By default, all URL's are considered.
Only documents that are mime sub-types of
textare processed. SeeFileHandlerfor a description of how to set mime types for url suffixes. (SeeMatchString). -
templates - A list of template names. For each name in the list, the property
name.classis examined to determine which class to use for each template. Thennameis used as the prefix for other template specific properties if any. Ifname.classdoes not exist, thennameis assumed to be the class name, and there are no template specific properties for the template. Methods in the template classes will be invoked to process the XML/HTML tags present in the content. -
session - The name of the request property that the Session ID will be found
in, used to identify the proper template instance.
The default value is "SessionID". Typically, a sessionHandler,
such as
CookieSessionHandleris used upstream to create the sessionID. If no id is found, then the session named "common" is used instead. Exactly one instance of each template class is created for each session. -
default - The default file in the directory to use as a template if a directory name is specified. Defaults to index[suffix], or "index.html" if no suffix is provided.
-
encoding - The character encoding to use to interpret the template. If no encoding is specified, the default encoding is used. The template is read from the filesystem, and converted into a String using this encoding. All template processing is done using the String representation.
-
outputEncoding - The character encoding to use to interpret the template results. If no "outputEncoding" is specified, then "encoding" is used. Once template processing is complete, the results are converted into a byte stream for transmission to the client using the "outputEncoding", if specified. If not specified then the HTTP default (8-bit ASCII) encoding is used.
-
modified - if present (e.g. set to any value) an HTTP
last-modifiedheader is added to the response with the current time. -
debugif set to "true", template debugging is enabled: templates will emit their pre-processed markup as an HTML comment. This parameter only takes effect if thedebugoption is not specified for an individual template. -
tagPrefix - If specified, all tag names defined for each template class
are prefixed with tagPrefix.
This parameter only takes effect
if the
tagPrefixoption is not specified for an individual template.
The request properties DirectoryName,
fileName and lastModified may be
set as a convenience for downstream handlers.
This handler duplicates some of the functionality of the
template filter,
so that it may be used by itself in simple configurations. As such,
if issues re-directs if directories are given without a trailing "/",
and uses an "index" file (see default above) if a directory
name is specified.
To filter content other than from the file system, use the
template filter instead.
- Version:
- 2.8 07/01/08
- Author:
- Stephen Uhler (stephen.uhler@sun.com), Colin Stevens (colin.stevens@sun.com)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetContent(Request request, File file, String encoding) get the content associated with this template.booleanInitializes the handler.booleanProcess an html template file, using the supplied template processing classes.
-
Constructor Details
-
TemplateHandler
public TemplateHandler()
-
-
Method Details
-
init
Description copied from interface:HandlerInitializes the handler.- Specified by:
initin interfaceHandler- Parameters:
server- The HTTP server that created thisHandler. TypicalHandlers will useServer.propsto obtain run-time configuration information.propsPrefix- The handlers name. The string thisHandlermay prepend to all of the keys that it uses to extract configuration information fromServer.props. This is set (by theServerandChainHandler) to help avoid configuration parameter namespace collisions.- Returns:
trueif thisHandlerinitialized successfully,falseotherwise. Iffalseis returned, thisHandlershould not be used.
-
respond
Process an html template file, using the supplied template processing classes.- Specified by:
respondin interfaceHandler- Parameters:
request- TheRequestobject that represents the HTTP request.- Returns:
trueif the request was handled. A request was handled if a response was supplied to the client, typically by callingRequest.sendResponse()orRequest.sendError.- Throws:
IOException- if there was an I/O error while sending the response to the client. Typically, in that case, theServerwill (try to) send an error message to the client and then close the client's connection.The
IOExceptionshould not be used to silently ignore problems such as being unable to access some server-side resource (for example getting aFileNotFoundExceptiondue to not being able to open a file). In that case, theHandler's duty is to turn thatIOExceptioninto a HTTP response indicating, in this case, that a file could not be found.
-
getContent
get the content associated with this template. This version reads it from a file.- Parameters:
request- The standard request objectfile- The file object to get the template from- Returns:
- The content of the template to be processed
- Throws:
IOException
-