|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.servlet.GenericServlet
javax.servlet.http.HttpServlet
freemarker.ext.servlet.FreemarkerServlet
public class FreemarkerServlet
This is a general-purpose FreeMarker view servlet.
The main features are:
Request
,
RequestParameters
, Session
, and Application
variables.
Application.attrName
, Session.attrName
,
Request.attrName
is not mandatory; it's enough to write attrName
,
and if no such variable was created in the template, it will search the
variable in Request
, and then in Session
,
and finally in Application
.
JspTaglibs
, that can be used
to load JSP taglibs. For example:<#assign tiles=JspTaglibs["/WEB-INF/struts-tiles.tld"]>
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:
Configuration
level setting. See Configuration.setSetting(java.lang.String, java.lang.String)
Field Summary | |
---|---|
protected boolean |
debug
|
static java.lang.String |
KEY_APPLICATION
|
static java.lang.String |
KEY_APPLICATION_PRIVATE
|
static java.lang.String |
KEY_JSP_TAGLIBS
|
static java.lang.String |
KEY_REQUEST
|
static java.lang.String |
KEY_REQUEST_PARAMETERS
|
static java.lang.String |
KEY_REQUEST_PRIVATE
|
static java.lang.String |
KEY_SESSION
|
static long |
serialVersionUID
|
Constructor Summary | |
---|---|
FreemarkerServlet()
|
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,
javax.servlet.ServletContext servletContext,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.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(javax.servlet.http.HttpServletRequest request)
|
protected TemplateLoader |
createTemplateLoader(java.lang.String templatePath)
Create the template loader. |
protected java.util.Locale |
deduceLocale(java.lang.String templatePath,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Returns the locale used for the Configuration.getTemplate(String, Locale) call. |
void |
doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
|
void |
doPost(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
|
protected Configuration |
getConfiguration()
Returns the Configuration object used by this servlet. |
protected ObjectWrapper |
getObjectWrapper()
|
protected java.lang.String |
getTemplatePath()
|
void |
init()
|
protected void |
initializeServletContext(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.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(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.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(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Template template,
TemplateModel data)
Called after the execution returns from template.process(). |
protected boolean |
preprocessRequest(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Called as the first step in request processing, before the templating mechanism is put to work. |
protected boolean |
preTemplateProcess(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Template template,
TemplateModel data)
Called before the execution is passed to template.process(). |
protected java.lang.String |
requestUrlToTemplatePath(javax.servlet.http.HttpServletRequest request)
Maps the request URL to a template path that is passed to Configuration.getTemplate(String, Locale) . |
Methods inherited from class javax.servlet.http.HttpServlet |
---|
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service |
Methods inherited from class javax.servlet.GenericServlet |
---|
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final long serialVersionUID
public static final java.lang.String KEY_REQUEST
public static final java.lang.String KEY_REQUEST_PRIVATE
public static final java.lang.String KEY_REQUEST_PARAMETERS
public static final java.lang.String KEY_SESSION
public static final java.lang.String KEY_APPLICATION
public static final java.lang.String KEY_APPLICATION_PRIVATE
public static final java.lang.String KEY_JSP_TAGLIBS
protected boolean debug
Constructor Detail |
---|
public FreemarkerServlet()
Method Detail |
---|
public void init() throws javax.servlet.ServletException
init
in class javax.servlet.GenericServlet
javax.servlet.ServletException
protected TemplateLoader createTemplateLoader(java.lang.String templatePath) throws java.io.IOException
ClassTemplateLoader
if the template path starts with "class://",
a FileTemplateLoader
if the template path starts with "file://",
and a WebappTemplateLoader
otherwise.
templatePath
- the template path to create a loader for
java.io.IOException
public void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
doGet
in class javax.servlet.http.HttpServlet
javax.servlet.ServletException
java.io.IOException
public void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
doPost
in class javax.servlet.http.HttpServlet
javax.servlet.ServletException
java.io.IOException
protected java.util.Locale deduceLocale(java.lang.String templatePath, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
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.
protected TemplateModel createModel(ObjectWrapper wrapper, javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws TemplateModelException
TemplateModelException
protected java.lang.String requestUrlToTemplatePath(javax.servlet.http.HttpServletRequest request)
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.
request
- the currently processed request
protected boolean preprocessRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
request
- the HTTP requestresponse
- the HTTP response
javax.servlet.ServletException
java.io.IOException
protected Configuration createConfiguration()
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.
protected ObjectWrapper createObjectWrapper()
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.
protected ObjectWrapper getObjectWrapper()
protected final java.lang.String getTemplatePath()
protected HttpRequestParametersHashModel createRequestParametersHashModel(javax.servlet.http.HttpServletRequest request)
protected void initializeServletContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
request
- the actual HTTP requestresponse
- the actual HTTP response
javax.servlet.ServletException
java.io.IOException
protected void initializeSession(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
request
- the actual HTTP requestresponse
- the actual HTTP response
javax.servlet.ServletException
java.io.IOException
protected boolean preTemplateProcess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Template template, TemplateModel data) throws javax.servlet.ServletException, java.io.IOException
Example: Expose the Serlvet context path as "baseDir" for all templates:
((SimpleHash) data).put("baseDir", request.getContextPath() + "/"); return true;
request
- the actual HTTP requestresponse
- the actual HTTP responsetemplate
- the template that will get executeddata
- the data that will be passed to the template. By default this will be
an AllHttpScopesHashModel
(which is a SimpleHash
subclass).
Thus, you can add new variables to the data-model with the
SimpleHash.put(String, Object)
subclass) method.
javax.servlet.ServletException
java.io.IOException
protected void postTemplateProcess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Template template, TemplateModel data) throws javax.servlet.ServletException, java.io.IOException
request
- the actual HTTP requestresponse
- the actual HTTP responsetemplate
- the template that was executeddata
- the data that was passed to the template
javax.servlet.ServletException
java.io.IOException
protected Configuration getConfiguration()
Configuration
object used by this servlet.
Please don't forget that Configuration
is not thread-safe
when you modify it.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |