Class TemplateHandler
- java.lang.Object
-
- sunlabs.brazil.template.TemplateHandler
-
- All Implemented Interfaces:
Handler
public class TemplateHandler extends java.lang.Object implements Handler
TheTemplateHandler
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
text
are processed. SeeFileHandler
for 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.class
is examined to determine which class to use for each template. Thenname
is used as the prefix for other template specific properties if any. Ifname.class
does not exist, thenname
is 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
CookieSessionHandler
is 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-modified
header is added to the response with the current time. -
debug
if set to "true", template debugging is enabled: templates will emit their pre-processed markup as an HTML comment. This parameter only takes effect if thedebug
option 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
tagPrefix
option is not specified for an individual template.
The request properties
DirectoryName
,fileName
andlastModified
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 (seedefault
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 Constructor Description TemplateHandler()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getContent(Request request, java.io.File file, java.lang.String encoding)
get the content associated with this template.boolean
init(Server server, java.lang.String propsPrefix)
Initializes the handler.boolean
respond(Request request)
Process an html template file, using the supplied template processing classes.
-
-
-
Method Detail
-
init
public boolean init(Server server, java.lang.String propsPrefix)
Description copied from interface:Handler
Initializes the handler.- Specified by:
init
in interfaceHandler
- Parameters:
server
- The HTTP server that created thisHandler
. TypicalHandler
s will useServer.props
to obtain run-time configuration information.propsPrefix
- The handlers name. The string thisHandler
may prepend to all of the keys that it uses to extract configuration information fromServer.props
. This is set (by theServer
andChainHandler
) to help avoid configuration parameter namespace collisions.- Returns:
true
if thisHandler
initialized successfully,false
otherwise. Iffalse
is returned, thisHandler
should not be used.
-
respond
public boolean respond(Request request) throws java.io.IOException
Process an html template file, using the supplied template processing classes.- Specified by:
respond
in interfaceHandler
- Parameters:
request
- TheRequest
object that represents the HTTP request.- Returns:
true
if the request was handled. A request was handled if a response was supplied to the client, typically by callingRequest.sendResponse()
orRequest.sendError
.- Throws:
java.io.IOException
- if there was an I/O error while sending the response to the client. Typically, in that case, theServer
will (try to) send an error message to the client and then close the client's connection.The
IOException
should not be used to silently ignore problems such as being unable to access some server-side resource (for example getting aFileNotFoundException
due to not being able to open a file). In that case, theHandler
's duty is to turn thatIOException
into a HTTP response indicating, in this case, that a file could not be found.
-
getContent
public java.lang.String getContent(Request request, java.io.File file, java.lang.String encoding) throws java.io.IOException
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:
java.io.IOException
-
-