freemarker.ext.servlet

Class FreemarkerServlet


public class FreemarkerServlet
extends HttpServlet

This is a general-purpose FreeMarker view servlet.

The main features are:

The servlet will rethrow the errors occurring during template processing, wrapped into ServletException, except if the class name of the class set by the template_exception_handler contains the substring "Debug". If it contains "Debug", then it is assumed that the template exception handler prints the error message to the page, thus FreemarkerServlet will suppress the exception, and logs the problem with the servlet logger (javax.servlet.GenericServlet.log(...)).

Supported init-params are:

Version:
$Id: FreemarkerServlet.java,v 1.82.2.5 2006/06/21 13:02:01 ddekany Exp $
Author:
Attila Szegedi

Field Summary

static String
KEY_APPLICATION
static String
KEY_APPLICATION_PRIVATE
static String
KEY_JSP_TAGLIBS
static String
KEY_REQUEST
static String
KEY_REQUEST_PARAMETERS
static String
KEY_REQUEST_PRIVATE
static String
KEY_SESSION
protected boolean
debug
static long
serialVersionUID

Method Summary

protected Configuration
createConfiguration()
This method is called from init() to create the FreeMarker configuration object that this servlet will use for template loading.
protected TemplateModel
createModel(ObjectWrapper wrapper, ServletContext servletContext, HttpServletRequest request, HttpServletResponse response)
protected ObjectWrapper
createObjectWrapper()
This method is called from init() to create the FreeMarker object wrapper object that this servlet will use for adapting request, session, and servlet context attributes into template models..
protected HttpRequestParametersHashModel
createRequestParametersHashModel(HttpServletRequest request)
protected Locale
deduceLocale(String templatePath, HttpServletRequest request, HttpServletResponse response)
Returns the locale used for the Configuration.getTemplate(String,Locale) call.
void
doGet(HttpServletRequest request, HttpServletResponse response)
void
doPost(HttpServletRequest request, HttpServletResponse response)
protected Configuration
getConfiguration()
Returns the Configuration object used by this servlet.
protected ObjectWrapper
getObjectWrapper()
protected String
getTemplatePath()
void
init()
protected void
initializeServletContext(HttpServletRequest request, HttpServletResponse response)
Called when servlet detects in a request processing that application-global (that is, ServletContext-specific) attributes are not yet set.
protected void
initializeSession(HttpServletRequest request, HttpServletResponse response)
Called when servlet detects in a request processing that session-global (that is, HttpSession-specific) attributes are not yet set.
protected void
postTemplateProcess(HttpServletRequest request, HttpServletResponse response, Template template, TemplateModel data)
Called after the execution returns from template.process().
protected boolean
preTemplateProcess(HttpServletRequest request, HttpServletResponse response, Template template, TemplateModel data)
Called before the execution is passed to template.process().
protected boolean
preprocessRequest(HttpServletRequest request, HttpServletResponse response)
Called as the first step in request processing, before the templating mechanism is put to work.
protected String
requestUrlToTemplatePath(HttpServletRequest request)
Maps the request URL to a template path that is passed to Configuration.getTemplate(String,Locale).

Field Details

KEY_APPLICATION

public static final String KEY_APPLICATION

KEY_APPLICATION_PRIVATE

public static final String KEY_APPLICATION_PRIVATE

KEY_JSP_TAGLIBS

public static final String KEY_JSP_TAGLIBS

KEY_REQUEST

public static final String KEY_REQUEST

KEY_REQUEST_PARAMETERS

public static final String KEY_REQUEST_PARAMETERS

KEY_REQUEST_PRIVATE

public static final String KEY_REQUEST_PRIVATE

KEY_SESSION

public static final String KEY_SESSION

debug

protected boolean debug

serialVersionUID

public static final long serialVersionUID
Field Value:
-2440216393145762479L

Method Details

createConfiguration

protected Configuration createConfiguration()
This method is called from init() to create the FreeMarker configuration object that this servlet will use for template loading. This is a hook that allows you to custom-configure the configuration object in a subclass. The default implementation returns a new Configuration instance.

createModel

protected TemplateModel createModel(ObjectWrapper wrapper,
                                    ServletContext servletContext,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
            throws TemplateModelException

createObjectWrapper

protected ObjectWrapper createObjectWrapper()
This method is called from init() to create the FreeMarker object wrapper object that this servlet will use for adapting request, session, and servlet context attributes into template models.. This is a hook that allows you to custom-configure the wrapper object in a subclass. The default implementation returns a wrapper that depends on the value of ObjectWrapper init parameter. If simple is specified, ObjectWrapper.SIMPLE_WRAPPER is used; if jython is specified, JythonWrapper is used. In every other case ObjectWrapper.DEFAULT_WRAPPER is used.

createRequestParametersHashModel

protected HttpRequestParametersHashModel createRequestParametersHashModel(HttpServletRequest request)

deduceLocale

protected Locale deduceLocale(String templatePath,
                              HttpServletRequest request,
                              HttpServletResponse response)
Returns the locale used for the Configuration.getTemplate(String,Locale) call. The base implementation simply returns the locale setting of the configuration. Override this method to provide different behaviour, i.e. to use the locale indicated in the request.

doGet

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
            throws ServletException,
                   IOException

doPost

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
            throws ServletException,
                   IOException

getConfiguration

protected Configuration getConfiguration()
Returns the Configuration object used by this servlet. Please don't forget that Configuration is not thread-safe when you modify it.

getObjectWrapper

protected ObjectWrapper getObjectWrapper()

getTemplatePath

protected final String getTemplatePath()

init

public void init()
            throws ServletException

initializeServletContext

protected void initializeServletContext(HttpServletRequest request,
                                        HttpServletResponse response)
            throws ServletException,
                   IOException
Called when servlet detects in a request processing that application-global (that is, ServletContext-specific) attributes are not yet set. This is a generic hook you might use in subclasses to perform a specific action on first request in the context. By default it does nothing.
Parameters:
request - the actual HTTP request
response - the actual HTTP response

initializeSession

protected void initializeSession(HttpServletRequest request,
                                 HttpServletResponse response)
            throws ServletException,
                   IOException
Called when servlet detects in a request processing that session-global (that is, HttpSession-specific) attributes are not yet set. This is a generic hook you might use in subclasses to perform a specific action on first request in the session. By default it does nothing. It is only invoked on newly created sessions; it is not invoked when a replicated session is reinstantiated in another servlet container.
Parameters:
request - the actual HTTP request
response - the actual HTTP response

postTemplateProcess

protected void postTemplateProcess(HttpServletRequest request,
                                   HttpServletResponse response,
                                   Template template,
                                   TemplateModel data)
            throws ServletException,
                   IOException
Called after the execution returns from template.process(). This is a generic hook you might use in subclasses to perform a specific action after the template is processed. It will be invoked even if the template processing throws an exception. By default does nothing.
Parameters:
request - the actual HTTP request
response - the actual HTTP response
template - the template that was executed
data - the data that was passed to the template

preTemplateProcess

protected boolean preTemplateProcess(HttpServletRequest request,
                                     HttpServletResponse response,
                                     Template template,
                                     TemplateModel data)
            throws ServletException,
                   IOException
Called before the execution is passed to template.process(). This is a generic hook you might use in subclasses to perform a specific action before the template is processed. By default does nothing. A typical action to perform here is to inject application-specific objects into the model root
Parameters:
request - the actual HTTP request
response - the actual HTTP response
template - the template that will get executed
data - the data that will be passed to the template
Returns:
true to process the template, false to suppress template processing.

preprocessRequest

protected boolean preprocessRequest(HttpServletRequest request,
                                    HttpServletResponse response)
            throws ServletException,
                   IOException
Called as the first step in request processing, before the templating mechanism is put to work. By default does nothing and returns false. This method is typically overridden to manage serving of non-template resources (i.e. images) that reside in the template directory.
Parameters:
request - the HTTP request
response - the HTTP response
Returns:
true to indicate this method has processed the request entirely, and that the further request processing should not take place.

requestUrlToTemplatePath

protected String requestUrlToTemplatePath(HttpServletRequest request)
Maps the request URL to a template path that is passed to Configuration.getTemplate(String,Locale). You can override it (i.e. to provide advanced rewriting capabilities), but you are strongly encouraged to call the overridden method first, then only modify its return value.
Parameters:
request - the currently processed request
Returns:
a String representing the template path