blob: dfe9ed12699ea46aa4c0209b1d4b99d98ae96819 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_281) on Sun Jan 15 15:58:35 CET 2023 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FreemarkerServlet (FreeMarker 2.3.32 API)</title>
<meta name="date" content="2023-01-15">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FreemarkerServlet (FreeMarker 2.3.32 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":42,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FreemarkerServlet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../freemarker/ext/servlet/AllHttpScopesHashModel.html" title="class in freemarker.ext.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../freemarker/ext/servlet/HttpRequestHashModel.html" title="class in freemarker.ext.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?freemarker/ext/servlet/FreemarkerServlet.html" target="_top">Frames</a></li>
<li><a href="FreemarkerServlet.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">freemarker.ext.servlet</div>
<h2 title="Class FreemarkerServlet" class="title">Class FreemarkerServlet</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>javax.servlet.GenericServlet</li>
<li>
<ul class="inheritance">
<li>javax.servlet.http.HttpServlet</li>
<li>
<ul class="inheritance">
<li>freemarker.ext.servlet.FreemarkerServlet</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">FreemarkerServlet</span>
extends javax.servlet.http.HttpServlet</pre>
<div class="block">FreeMarker MVC View servlet that can be used similarly to JSP views. That is, you put the variables to expose into
HTTP servlet request attributes, then forward to an FTL file (instead of to a JSP file) that's mapped to this servet
(usually via the <code>&lt;url-pattern&gt;*.ftl&lt;url-pattern&gt;</code>). See web.xml example (and more) in the FreeMarker Manual!
<p>
<b>Main features</b>
</p>
<ul>
<li>It makes all request, request parameters, session, and servlet context attributes available to templates through
<code>Request</code>, <code>RequestParameters</code>, <code>Session</code>, and <code>Application</code> variables.
<li>The scope variables are also available via automatic scope discovery. That is, writing
<code>Application.attrName</code>, <code>Session.attrName</code>, <code>Request.attrName</code> is not mandatory;
it's enough to write <code>attrName</code>, and if no such variable was created in the template, it will search the
variable in <code>Request</code>, and then in <code>Session</code>, and finally in <code>Application</code>.
<li>It creates a variable with name <code>JspTaglibs</code> that can be used to load JSP taglibs. For example:<br>
<code>&lt;#assign dt=JspTaglibs["http://displaytag.sf.net"]&gt;</code> or
<code>&lt;#assign tiles=JspTaglibs["/WEB-INF/struts-tiles.tld"]&gt;</code>.
<li>A custom directive named <code>include_page</code> allows you to include the output of another servlet resource from
your servlet container, just as if you used <code>ServletRequest.getRequestDispatcher(path).include()</code>: <code>&lt;@include_page path="/myWebapp/somePage.jsp"/&gt;</code>. You can also pass parameters to the newly included page by passing a
hash named <code>params</code>:
<code>&lt;@include_page path="/myWebapp/somePage.jsp" params= lang: "en", q="5"}/&gt;</code>. By default, the request
parameters of the original request (the one being processed by FreemarkerServlet) are also inherited by the include.
You can explicitly control this inheritance using the <code>inherit_params</code> parameter:
<code>&lt;@include_page path="/myWebapp/somePage.jsp" params={lang: "en", q="5"} inherit_params=false/&gt;</code>.
</ul>
<p>
<b>Supported <code>init-param</code>-s</b>
</p>
<ul>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_TEMPLATE_PATH">"TemplatePath"</a></strong>: Specifies the location of the template files. By default,
this is interpreted as a <code>ServletContext</code> resource path, which practically means a web application directory
relative path, or a <code>WEB-INF/lib/*.jar/META-INF/resources</code>-relative path (note that this last haven't always
worked before FreeMarker 2.3.23).<br>
Alternatively, you can prepend it with <tt>file://</tt> to indicate a literal path in the file system (i.e.
<tt>file:///var/www/project/templates/</tt>). Note that three slashes were used to specify an absolute path.<br>
Also, you can prepend it with <code>classpath:</code>, like in <tt>classpath:com/example/templates</tt>, to indicate that
you want to load templates from the specified package accessible through the Thread Context Class Loader of the
thread that initializes this servlet.<br>
If <code>incompatible_improvements</code> is set to 2.3.22 (or higher), you can specify multiple comma separated locations
inside square brackets, like: <code>[ WEB-INF/templates, classpath:com/example/myapp/templates ]</code>. This internally
creates a <a href="../../../freemarker/cache/MultiTemplateLoader.html" title="class in freemarker.cache"><code>MultiTemplateLoader</code></a>. Note again that if <code>incompatible_improvements</code> isn't set to at least
2.3.22, the initial <code>[</code> has no special meaning, and so this feature is unavailable.<br>
Any of the above can have a <code>?setting(name=value, ...)</code> postfix to set the JavaBeans properties of the
<a href="../../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache"><code>TemplateLoader</code></a> created. For example,
<code>/templates?settings(attemptFileAccess=false, URLConnectionUsesCaches=true)</code> calls
<a href="../../../freemarker/cache/WebappTemplateLoader.html#setAttemptFileAccess-boolean-"><code>WebappTemplateLoader.setAttemptFileAccess(boolean)</code></a> and
<a href="../../../freemarker/cache/WebappTemplateLoader.html#setURLConnectionUsesCaches-java.lang.Boolean-"><code>WebappTemplateLoader.setURLConnectionUsesCaches(Boolean)</code></a> to tune the <a href="../../../freemarker/cache/WebappTemplateLoader.html" title="class in freemarker.cache"><code>WebappTemplateLoader</code></a>. For
backward compatibility (not recommended!), you can use the <code>class://</code> prefix, like in
<tt>class://com/example/templates</tt> format, which is similar to <code>classpath:</code>, except that it uses the
defining class loader of this servlet's class. This can cause template-not-found errors, if that class (in
<code>freemarer.jar</code> usually) is not local to the web application, while the templates are.<br>
The default value is <tt>class://</tt> (that is, the root of the class hierarchy), which is not recommended anymore,
and should be overwritten with the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_TEMPLATE_PATH">"TemplatePath"</a> init-param.</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_NO_CACHE">"NoCache"</a></strong>: If set to <code>true</code>, generates headers in the response that
advise the HTTP client not to cache the returned page. If <code>false</code>, the HTTP response is not modified for this
purpose. The default is <code>false</code>.</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CONTENT_TYPE">"ContentType"</a></strong>: The Content-type HTTP header value used in the HTTP responses
when nothing else specifies the MIME type. The things that may specify the MIME type (and hence this init-param is
ignored), starting with the highest precedence, are:
<ol>
<li>If the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">"OverrideResponseContentType"</a> init-param is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_NEVER">"never"</a> (the
default is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">"always"</a>), then the value of <code>ServletResponse.getContentType()</code> is used
if that's non-<code>null</code>.
<li>The template's <tt>content_type</tt> custom attribute, usually specified via the <tt>attributes</tt> parameter of
the <tt>&lt;#ftl&gt;</tt> directive. This is a legacy feature, deprecated by the <a href="../../../freemarker/core/OutputFormat.html" title="class in freemarker.core"><code>OutputFormat</code></a> mechanism.
<li>The <a href="../../../freemarker/template/Template.html#getOutputFormat--">output format of the template</a>, if that has non-<code>null</code> MIME-type
(<a href="../../../freemarker/core/OutputFormat.html#getMimeType--"><code>OutputFormat.getMimeType()</code></a>). When a template has no output format specified, <a href="../../../freemarker/core/UndefinedOutputFormat.html" title="class in freemarker.core"><code>UndefinedOutputFormat</code></a>
is used, which has <code>null</code> MIME-type. (The output format of a template is deduced from <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>
settings, or can be specified directly in the template, like <code>&lt;#ftl outputFormat="HTML"&gt;</code>. See the FreeMarker
Manual for more about the output format mechanism. Note that setting an output format may turns on auto-escaping, so
it's not just about MIME types.)
<li>If the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">"OverrideResponseContentType"</a> init-param is not <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">"always"</a>
(the default is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">"always"</a>), then the value of <code>ServletResponse.getContentType()</code> is
used if that's non-<code>null</code>.
</ol>
If none of the above gives a MIME type, then this init-param does. Defaults to <tt>"text/html"</tt>. If and only if
the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_RESPONSE_CHARACTER_ENCODING">"ResponseCharacterEncoding"</a> init-param is set to <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_LEGACY">"legacy"</a> (which is
the default of it), the content type may include the charset (as in <tt>"text/html; charset=utf-8"</tt>), in which
case that specifies the actual charset of the output. If the the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_RESPONSE_CHARACTER_ENCODING">"ResponseCharacterEncoding"</a>
init-param is not set to <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_LEGACY">"legacy"</a>, then specifying the charset in the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CONTENT_TYPE">"ContentType"</a> init-param is not allowed, and will cause servlet initialization error.</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">"OverrideResponseContentType"</a></strong> (since 2.3.24): Specifies when we should
override the <code>contentType</code> that might be already set (i.e., non-<code>null</code>) in the
<code>HttpServletResponse</code>. The default is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">"always"</a>, which means that we always set the
content type. Another possible value is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_NEVER">"never"</a>, which means that we don't set the content
type in the response, unless <code>ServletResponse.getContentType()</code> is <code>null</code>. The third possible value
is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE">"whenTemplateHasMimeType"</a>, which means that we only set the content type if either
the template has an associated <a href="../../../freemarker/core/OutputFormat.html" title="class in freemarker.core"><code>OutputFormat</code></a> with non-<code>null</code> <a href="../../../freemarker/core/OutputFormat.html#getMimeType--"><code>OutputFormat.getMimeType()</code></a>, or it
has a custom attribute with name <tt>content_type</tt>, or <code>ServletResponse.getContentType()</code> is
<code>null</code>. Setting this init-param allows you to specify the content type before forwarding to
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a>.</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_LOCALE">"OverrideResponseLocale"</a></strong> (since 2.3.24): Specifies if we should override
the template <code>locale</code> that might be already set (i.e., non-<code>null</code>) in the <code>HttpServletRequest</code>. The
default is <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">"always"</a>, which means that we always deduce the template <code>locale</code> by
invoking <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#deduceLocale-java.lang.String-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-"><code>deduceLocale(String, HttpServletRequest, HttpServletResponse)</code></a>. Another possible value is
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_NEVER">"never"</a>, which means that we don't deduce the template <code>locale</code>, unless
<code>ServletRequest.getLocale()</code> is <code>null</code>.
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_RESPONSE_CHARACTER_ENCODING">"ResponseCharacterEncoding"</a></strong> (since 2.3.24): Specifies how the
<code>HttpServletResponse</code> "character encoding" (as in <code>ServletResponse.setCharacterEncoding(String)</code>)
will be deduced. The possible modes are:
<ul>
<li><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_LEGACY">"legacy"</a>: This is the default for backward compatibility; in new applications, use
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_FROM_TEMPLATE">"fromTemplate"</a> (or some of the other options) instead. <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_LEGACY">"legacy"</a>
will use the charset of the template file to set the charset of the servlet response. Except, if the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CONTENT_TYPE">"ContentType"</a> init-param contains a charset, it will use that instead. A quirk of this legacy
mode is that it's not aware of the <a href="../../../freemarker/core/Configurable.html#getOutputEncoding--"><code>Configurable.getOutputEncoding()</code></a> FreeMarker setting, and thus never reads
or writes it (though very few applications utilize that setting anyway). Also, it sets the charset of the servlet
response by adding it to the response content type via calling <code>ServletResponse.setContentType(String)</code> (as
that was the only way before Servlet 2.4), not via the more modern
<code>ServletResponse.setCharacterEncoding(String)</code> method. Note that the charset of a template usually comes
from <a href="../../../freemarker/template/Configuration.html#getDefaultEncoding--"><code>Configuration.getDefaultEncoding()</code></a> (i.e., from the <code>default_encoding</code> FreeMarker setting),
occasionally from <a href="../../../freemarker/template/Configuration.html#getEncoding-java.util.Locale-"><code>Configuration.getEncoding(Locale)</code></a> (when FreeMarker was configured to use different charsets
depending on the locale) or even more rarely from <a href="../../../freemarker/template/Configuration.html#getTemplateConfigurations--"><code>Configuration.getTemplateConfigurations()</code></a> (when FreeMarker was
configured to use a specific charset for certain templates).
<li><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_FROM_TEMPLATE">"fromTemplate"</a>: This should be used in most applications, but it's not the default for
backward compatibility. It reads the <a href="../../../freemarker/core/Configurable.html#getOutputEncoding--"><code>Configurable.getOutputEncoding()</code></a> setting of the template (note that the
template usually just inherits that from the <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>), and if that's not set, then reads the source
charset of the template, just like <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_LEGACY">"legacy"</a>. Then it passes the charset acquired this way to
<code>ServletResponse.setCharacterEncoding(String)</code> and <a href="../../../freemarker/core/Environment.html#setOutputEncoding-java.lang.String-"><code>Environment.setOutputEncoding(String)</code></a>. (It
doesn't call the legacy <code>ServletResponse.setContentType(String)</code> API to set the charset.) (Note that if the
template has a <code>content_type</code> template attribute (which is deprecated) that specifies a charset, it will be
used as the output charset of that template.)
<li><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_DO_NOT_SET">"doNotSet"</a>: <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> will not set the <code>HttpServletResponse</code>
"character encoding". It will still call <a href="../../../freemarker/core/Environment.html#setOutputEncoding-java.lang.String-"><code>Environment.setOutputEncoding(String)</code></a>, so that the running template
will be aware of the charset used for the output.
<li><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_FORCE_PREFIX">"force "</a> + charset name, for example <code>force UTF-8</code>: The output charset will
be the one specified after "force" + space, regardless of everything. The charset specified this way is passed to
<code>ServletResponse.setCharacterEncoding(String)</code> and <a href="../../../freemarker/core/Environment.html#setOutputEncoding-java.lang.String-"><code>Environment.setOutputEncoding(String)</code></a>. If the
charset name is not recognized by Java, the servlet initialization will fail.
</ul>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_BUFFER_SIZE">"BufferSize"</a></strong>: Sets the size of the output buffer in bytes, or if "KB" or
"MB" is written after the number (like <code>&lt;param-value&gt;256 KB&lt;/param-value&gt;</code>) then in kilobytes or megabytes.
This corresponds to <code>ServletResponse.setBufferSize(int)</code>. If the <code>HttpServletResponse</code> state doesn't
allow changing the buffer size, it will silently do nothing. If this init param isn't specified, then the buffer size
is not set by <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> in the HTTP response, which usually means that the default buffer size of the
servlet container will be used.</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE">"ExceptionOnMissingTemplate"</a></strong> (since 2.3.22): If <code>false</code> (default,
but not recommended), if a template is requested that's missing, this servlet responses with a HTTP 404 "Not found"
error, and only logs the problem with debug level. If <code>true</code> (recommended), the servlet will log the issue with
error level, then throws an exception that bubbles up to the servlet container, which usually then creates a HTTP 500
"Internal server error" response (and maybe logs the event into the container log). See "Error handling" later for
more!</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a></strong> (since 2.3.22): Comma separated list of items, each
is either <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS">"webInfPerLibJars"</a>, or <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_CLASSPATH">"classpath"</a>
optionally followed by colon and a regular expression, or <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_CLEAR">"clear"</a>. For example <code>&lt;param-value&gt;classpath:.*myoverride.*\.jar$, webInfPerLibJars, classpath:.*taglib.*\.jar$&lt;/param-value&gt;</code>, or <code>&lt;param-value&gt;classpath&lt;/param-value&gt;</code>. (Whitespace around the commas and list items will be ignored.) See
<a href="../../../freemarker/ext/jsp/TaglibFactory.html#setMetaInfTldSources-java.util.List-"><code>TaglibFactory.setMetaInfTldSources(List)</code></a> for more information. Defaults to a list that contains
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS">"webInfPerLibJars"</a> only (can be overridden with
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultMetaInfTldSources--"><code>createDefaultMetaInfTldSources()</code></a>). Note that this can be also specified with the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#SYSTEM_PROPERTY_META_INF_TLD_SOURCES">"org.freemarker.jsp.metaInfTldSources"</a> system property. If both the init-param and the system property
exists, the sources listed in the system property will be added after those specified by the init-param. This is
where the special entry, <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_CLEAR">"clear"</a> comes handy, as it will remove all previous list
items. (An intended usage of the system property is setting it to <code>clear, classpath</code> in the Eclipse run
configuration if you are running the application without putting the dependency jar-s into <code>WEB-INF/lib</code>.)
Also, note that further <code>classpath:&lt;pattern&gt;</code> items are added automatically at the end of this list based on
Jetty's <code>"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern"</code> servlet context attribute.</li>
<li><strong><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CLASSPATH_TLDS">"ClasspathTlds"</a></strong> (since 2.3.22): Comma separated list of paths; see
<a href="../../../freemarker/ext/jsp/TaglibFactory.html#setClasspathTlds-java.util.List-"><code>TaglibFactory.setClasspathTlds(List)</code></a>. Whitespace around the list items will be ignored. Defaults to no paths
(can be overidden with <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultClassPathTlds--"><code>createDefaultClassPathTlds()</code></a>). Note that this can also be specified with the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#SYSTEM_PROPERTY_CLASSPATH_TLDS">"org.freemarker.jsp.classpathTlds"</a> system property. If both the init-param and the system property exists, the
items listed in system property will be added after those specified by the init-param.</li>
<li><strong>"Debug"</strong>: Deprecated, has no effect since 2.3.22. (Earlier it has enabled/disabled sending
debug-level log messages to the servlet container log, but this servlet doesn't log debug level messages into the
servlet container log anymore, only into the FreeMarker log.)</li>
<li>The following init-params are supported only for backward compatibility, and their usage is discouraged:
<code>TemplateUpdateInterval</code>, <code>DefaultEncoding</code>, <code>ObjectWrapper</code>, <code>TemplateExceptionHandler</code>.
Instead, use init-params with the setting names documented at <a href="../../../freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-"><code>Configuration.setSetting(String, String)</code></a>, such
as <code>object_wrapper</code>.
<li><strong>Any other init-params</strong> will be interpreted as <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>-level FreeMarker setting. See
the possible names and values at <a href="../../../freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-"><code>Configuration.setSetting(String, String)</code></a>. Note that these init-param names
are starting with lower-case letter (upper-case init-params are used for FreemarkerSerlvet settings).</li>
</ul>
<p>
<b>Error handling</b>
</p>
<p>
Notes:
</p>
<ul>
<li>Logging below, where not said otherwise, always refers to logging with FreeMarker's logging facility (see
<a href="../../../freemarker/log/Logger.html" title="class in freemarker.log"><code>Logger</code></a>), under the "freemarker.servlet" category.</li>
<li>Throwing a <code>ServletException</code> to the servlet container is mentioned at a few places below. That in practice
usually means HTTP 500 "Internal server error" response, and maybe a log entry in the servlet container's log.</li>
</ul>
<p>
Errors types:
</p>
<ul>
<li>If the servlet initialization fails, the servlet won't be started as usual. The cause is usually logged with
error level. When it isn't, check the servlet container's log.
<li>If the requested template doesn't exist, by default the servlet returns a HTTP 404 "Not found" response, and logs
the problem with <em>debug</em> level. Responding with HTTP 404 is how JSP behaves, but it's actually not a
recommended setting anymore. By setting <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE">"ExceptionOnMissingTemplate"</a> init-param to <code>true</code>
(recommended), it will instead log the problem with error level, then the servlet throws <code>ServletException</code> to
the servlet container (with the proper cause exception). After all, if the visited URL had an associated "action" but
the template behind it is missing, that's an internal server error, not a wrong URL.</li>
<li>If the template contains parsing errors, it will log it with error level, then the servlet throws
<code>ServletException</code> to the servlet container (with the proper cause exception).</li>
<li>If the template throws exception during its execution, and the value of the <code>template_exception_handler</code>
init-param is <code>rethrow</code> (recommended), it will log it with error level and then the servlet throws
<code>ServletException</code> to the servlet container (with the proper cause exception). But beware, the default value of
the <code>template_exception_handler</code> init-param is <code>html_debug</code>, which is for development only! Set it to
<code>rethrow</code> for production. The <code>html_debug</code> (and <code>debug</code>) handlers will print error details to the
page and then commit the HTTP response with response code 200 "OK", thus, the server wont be able roll back the
response and send back an HTTP 500 page. This is so that the template developers will see the error without digging
the logs.
</ul></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../serialized-form.html#freemarker.ext.servlet.FreemarkerServlet">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#debug">debug</a></span></code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Not used anymore; to enable/disable debug logging, just set the logging level of the logging library
used by <a href="../../../freemarker/log/Logger.html" title="class in freemarker.log"><code>Logger</code></a>.</span></div>
</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_BUFFER_SIZE">INIT_PARAM_BUFFER_SIZE</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CLASSPATH_TLDS">INIT_PARAM_CLASSPATH_TLDS</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CONTENT_TYPE">INIT_PARAM_CONTENT_TYPE</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE">INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">INIT_PARAM_META_INF_TLD_LOCATIONS</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_NO_CACHE">INIT_PARAM_NO_CACHE</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_LOCALE">INIT_PARAM_OVERRIDE_RESPONSE_LOCALE</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_RESPONSE_CHARACTER_ENCODING">INIT_PARAM_RESPONSE_CHARACTER_ENCODING</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_TEMPLATE_PATH">INIT_PARAM_TEMPLATE_PATH</a></span></code>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">INIT_PARAM_VALUE_ALWAYS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_DO_NOT_SET">INIT_PARAM_VALUE_DO_NOT_SET</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_FORCE_PREFIX">INIT_PARAM_VALUE_FORCE_PREFIX</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_FROM_TEMPLATE">INIT_PARAM_VALUE_FROM_TEMPLATE</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_LEGACY">INIT_PARAM_VALUE_LEGACY</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_NEVER">INIT_PARAM_VALUE_NEVER</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE">INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_APPLICATION">KEY_APPLICATION</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_APPLICATION_PRIVATE">KEY_APPLICATION_PRIVATE</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_INCLUDE">KEY_INCLUDE</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_JSP_TAGLIBS">KEY_JSP_TAGLIBS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_REQUEST">KEY_REQUEST</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_REQUEST_PARAMETERS">KEY_REQUEST_PARAMETERS</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_REQUEST_PRIVATE">KEY_REQUEST_PRIVATE</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#KEY_SESSION">KEY_SESSION</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_CLASSPATH">META_INF_TLD_LOCATION_CLASSPATH</a></span></code>
<div class="block">Used as part of the value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_CLEAR">META_INF_TLD_LOCATION_CLEAR</a></span></code>
<div class="block">Used as part of the value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS">META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS</a></span></code>
<div class="block">Used as part of the value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#serialVersionUID">serialVersionUID</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#SYSTEM_PROPERTY_CLASSPATH_TLDS">SYSTEM_PROPERTY_CLASSPATH_TLDS</a></span></code>
<div class="block">When set, the items defined in it will be added after those coming from the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CLASSPATH_TLDS">"ClasspathTlds"</a> init-param.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#SYSTEM_PROPERTY_META_INF_TLD_SOURCES">SYSTEM_PROPERTY_META_INF_TLD_SOURCES</a></span></code>
<div class="block">When set, the items defined in it will be added after those coming from the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#FreemarkerServlet--">FreemarkerServlet</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template">Configuration</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createConfiguration--">createConfiguration</a></span>()</code>
<div class="block">Creates the FreeMarker <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> singleton and (when overidden) maybe sets its defaults.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected java.util.List</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultClassPathTlds--">createDefaultClassPathTlds</a></span>()</code>
<div class="block">Creates the default of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CLASSPATH_TLDS">"ClasspathTlds"</a> init-param; if this init-param is specified, it
will be appended <em>after</em> the default, not replace it.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected java.util.List</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultMetaInfTldSources--">createDefaultMetaInfTldSources</a></span>()</code>
<div class="block">Creates the default of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param; if this init-param is
specified, it will completelly <em>replace</em> the default value.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultObjectWrapper--">createDefaultObjectWrapper</a></span>()</code>
<div class="block">Override this to specify what the default <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> will be when the
<code>object_wrapper</code> Servlet init-param wasn't specified.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createModel-freemarker.template.ObjectWrapper-javax.servlet.ServletContext-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">createModel</a></span>(<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;objectWrapper,
javax.servlet.ServletContext&nbsp;servletContext,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createObjectWrapper--">createObjectWrapper</a></span>()</code>
<div class="block">Called from <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#init--"><code>init()</code></a> to create the <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a>; to customzie this aspect, in most cases you
should override <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultObjectWrapper--"><code>createDefaultObjectWrapper()</code></a> instead.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/ext/servlet/HttpRequestParametersHashModel.html" title="class in freemarker.ext.servlet">HttpRequestParametersHashModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createRequestParametersHashModel-javax.servlet.http.HttpServletRequest-">createRequestParametersHashModel</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request)</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/ext/jsp/TaglibFactory.html" title="class in freemarker.ext.jsp">TaglibFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createTaglibFactory-freemarker.template.ObjectWrapper-javax.servlet.ServletContext-">createTaglibFactory</a></span>(<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;objectWrapper,
javax.servlet.ServletContext&nbsp;servletContext)</code>
<div class="block">Called to create the <a href="../../../freemarker/ext/jsp/TaglibFactory.html" title="class in freemarker.ext.jsp"><code>TaglibFactory</code></a> once per servlet context.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createTemplateLoader-java.lang.String-">createTemplateLoader</a></span>(java.lang.String&nbsp;templatePath)</code>
<div class="block">Create the template loader.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected java.util.Locale</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#deduceLocale-java.lang.String-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">deduceLocale</a></span>(java.lang.String&nbsp;templatePath,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">Returns the locale used for the <a href="../../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-"><code>Configuration.getTemplate(String, Locale)</code></a> call (as far as the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_LOCALE">"OverrideResponseLocale"</a> Servlet init-param allows that).</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#doGet-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">doGet</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#doPost-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">doPost</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template">Configuration</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#getConfiguration--">getConfiguration</a></span>()</code>
<div class="block">Returns the <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> object used by this servlet.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#getDefaultOverrideResponseContentType--">getDefaultOverrideResponseContentType</a></span>()</code>
<div class="block">Returns the default value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">"OverrideResponseContentType"</a> Servlet init-param.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>protected <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#getObjectWrapper--">getObjectWrapper</a></span>()</code>
<div class="block">Should be final; don't override it.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#getTemplatePath--">getTemplatePath</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Not called by FreeMarker code, and there's no point to override this (unless to cause confusion).</span></div>
</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#init--">init</a></span>()</code>
<div class="block">Don't override this method to adjust FreeMarker settings! Override the protected methods for that, such as
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createConfiguration--"><code>createConfiguration()</code></a>, <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createTemplateLoader-java.lang.String-"><code>createTemplateLoader(String)</code></a>, <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultObjectWrapper--"><code>createDefaultObjectWrapper()</code></a>,
etc.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#initializeServletContext-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">initializeServletContext</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">Called when servlet detects in a request processing that
application-global (that is, ServletContext-specific) attributes are not yet
set.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#initializeSession-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">initializeSession</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">Called when servlet detects in a request processing that session-global
(that is, HttpSession-specific) attributes are not yet set.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#postTemplateProcess-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-freemarker.template.Template-freemarker.template.TemplateModel-">postTemplateProcess</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response,
<a href="../../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;template,
<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;data)</code>
<div class="block">Called after the execution returns from <a href="../../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process(Object, java.io.Writer)</code></a>.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#preprocessRequest-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">preprocessRequest</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">Called as the first step in request processing, before the templating mechanism
is put to work.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#preTemplateProcess-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-freemarker.template.Template-freemarker.template.TemplateModel-">preTemplateProcess</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response,
<a href="../../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;template,
<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;model)</code>
<div class="block">Called before the execution is passed to <a href="../../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process(Object, java.io.Writer)</code></a>.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#processEnvironment-freemarker.core.Environment-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">processEnvironment</a></span>(<a href="../../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)</code>
<div class="block">This is the method that actually executes the template.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#requestUrlToTemplatePath-javax.servlet.http.HttpServletRequest-">requestUrlToTemplatePath</a></span>(javax.servlet.http.HttpServletRequest&nbsp;request)</code>
<div class="block">Maps the request URL to a template path (template name) that is passed to
<a href="../../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-"><code>Configuration.getTemplate(String, Locale)</code></a>.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#setConfigurationDefaults--">setConfigurationDefaults</a></span>()</code>
<div class="block">Sets the defaults of the configuration that are specific to the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> subclass.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.servlet.http.HttpServlet">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;javax.servlet.http.HttpServlet</h3>
<code>doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.servlet.GenericServlet">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;javax.servlet.GenericServlet</h3>
<code>destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="serialVersionUID">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serialVersionUID</h4>
<pre>public static final&nbsp;long serialVersionUID</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.serialVersionUID">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_TEMPLATE_PATH">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_TEMPLATE_PATH</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_TEMPLATE_PATH</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params. (This init-param
has existed long before 2.3.22, but this constant was only added then.)</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_TEMPLATE_PATH">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_NO_CACHE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_NO_CACHE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_NO_CACHE</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params. (This init-param
has existed long before 2.3.22, but this constant was only added then.)</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_NO_CACHE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_CONTENT_TYPE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_CONTENT_TYPE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_CONTENT_TYPE</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params. (This init-param
has existed long before 2.3.22, but this constant was only added then.)</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_CONTENT_TYPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_RESPONSE_CHARACTER_ENCODING">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_RESPONSE_CHARACTER_ENCODING</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_RESPONSE_CHARACTER_ENCODING</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_RESPONSE_CHARACTER_ENCODING">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_OVERRIDE_RESPONSE_LOCALE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_OVERRIDE_RESPONSE_LOCALE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_OVERRIDE_RESPONSE_LOCALE</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_OVERRIDE_RESPONSE_LOCALE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_BUFFER_SIZE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_BUFFER_SIZE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_BUFFER_SIZE</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_BUFFER_SIZE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_META_INF_TLD_LOCATIONS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_META_INF_TLD_LOCATIONS</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_META_INF_TLD_LOCATIONS</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_META_INF_TLD_LOCATIONS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_CLASSPATH_TLDS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_CLASSPATH_TLDS</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_CLASSPATH_TLDS</pre>
<div class="block">Init-param name - see the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> class documentation about the init-params.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_CLASSPATH_TLDS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_NEVER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_NEVER</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_NEVER</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_NEVER">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_ALWAYS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_ALWAYS</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_ALWAYS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_ALWAYS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_FROM_TEMPLATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_FROM_TEMPLATE</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_FROM_TEMPLATE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_FROM_TEMPLATE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_LEGACY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_LEGACY</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_LEGACY</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_LEGACY">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_DO_NOT_SET">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_DO_NOT_SET</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_DO_NOT_SET</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_DO_NOT_SET">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="INIT_PARAM_VALUE_FORCE_PREFIX">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INIT_PARAM_VALUE_FORCE_PREFIX</h4>
<pre>public static final&nbsp;java.lang.String INIT_PARAM_VALUE_FORCE_PREFIX</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.INIT_PARAM_VALUE_FORCE_PREFIX">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SYSTEM_PROPERTY_META_INF_TLD_SOURCES">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SYSTEM_PROPERTY_META_INF_TLD_SOURCES</h4>
<pre>public static final&nbsp;java.lang.String SYSTEM_PROPERTY_META_INF_TLD_SOURCES</pre>
<div class="block">When set, the items defined in it will be added after those coming from the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param. The value syntax is the same as of the init-param. Note
that <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#META_INF_TLD_LOCATION_CLEAR">"clear"</a> can be used to re-start the list, rather than continue it.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.SYSTEM_PROPERTY_META_INF_TLD_SOURCES">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SYSTEM_PROPERTY_CLASSPATH_TLDS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SYSTEM_PROPERTY_CLASSPATH_TLDS</h4>
<pre>public static final&nbsp;java.lang.String SYSTEM_PROPERTY_CLASSPATH_TLDS</pre>
<div class="block">When set, the items defined in it will be added after those coming from the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CLASSPATH_TLDS">"ClasspathTlds"</a> init-param. The value syntax is the same as of the init-param.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.SYSTEM_PROPERTY_CLASSPATH_TLDS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS</h4>
<pre>public static final&nbsp;java.lang.String META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS</pre>
<div class="block">Used as part of the value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="META_INF_TLD_LOCATION_CLASSPATH">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>META_INF_TLD_LOCATION_CLASSPATH</h4>
<pre>public static final&nbsp;java.lang.String META_INF_TLD_LOCATION_CLASSPATH</pre>
<div class="block">Used as part of the value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.META_INF_TLD_LOCATION_CLASSPATH">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="META_INF_TLD_LOCATION_CLEAR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>META_INF_TLD_LOCATION_CLEAR</h4>
<pre>public static final&nbsp;java.lang.String META_INF_TLD_LOCATION_CLEAR</pre>
<div class="block">Used as part of the value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.META_INF_TLD_LOCATION_CLEAR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_REQUEST">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_REQUEST</h4>
<pre>public static final&nbsp;java.lang.String KEY_REQUEST</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_REQUEST">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_INCLUDE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_INCLUDE</h4>
<pre>public static final&nbsp;java.lang.String KEY_INCLUDE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_INCLUDE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_REQUEST_PRIVATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_REQUEST_PRIVATE</h4>
<pre>public static final&nbsp;java.lang.String KEY_REQUEST_PRIVATE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_REQUEST_PRIVATE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_REQUEST_PARAMETERS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_REQUEST_PARAMETERS</h4>
<pre>public static final&nbsp;java.lang.String KEY_REQUEST_PARAMETERS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_REQUEST_PARAMETERS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_SESSION">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_SESSION</h4>
<pre>public static final&nbsp;java.lang.String KEY_SESSION</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_SESSION">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_APPLICATION">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_APPLICATION</h4>
<pre>public static final&nbsp;java.lang.String KEY_APPLICATION</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_APPLICATION">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_APPLICATION_PRIVATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_APPLICATION_PRIVATE</h4>
<pre>public static final&nbsp;java.lang.String KEY_APPLICATION_PRIVATE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_APPLICATION_PRIVATE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="KEY_JSP_TAGLIBS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>KEY_JSP_TAGLIBS</h4>
<pre>public static final&nbsp;java.lang.String KEY_JSP_TAGLIBS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#freemarker.ext.servlet.FreemarkerServlet.KEY_JSP_TAGLIBS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="debug">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>debug</h4>
<pre>@Deprecated
protected&nbsp;boolean debug</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Not used anymore; to enable/disable debug logging, just set the logging level of the logging library
used by <a href="../../../freemarker/log/Logger.html" title="class in freemarker.log"><code>Logger</code></a>.</span></div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="FreemarkerServlet--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>FreemarkerServlet</h4>
<pre>public&nbsp;FreemarkerServlet()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="init--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre>public&nbsp;void&nbsp;init()
throws javax.servlet.ServletException</pre>
<div class="block">Don't override this method to adjust FreeMarker settings! Override the protected methods for that, such as
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createConfiguration--"><code>createConfiguration()</code></a>, <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createTemplateLoader-java.lang.String-"><code>createTemplateLoader(String)</code></a>, <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultObjectWrapper--"><code>createDefaultObjectWrapper()</code></a>,
etc. Also note that lot of things can be changed with init-params instead of overriding methods, so if you
override settings, usually you should only override their defaults.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>init</code>&nbsp;in class&nbsp;<code>javax.servlet.GenericServlet</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
</dl>
</li>
</ul>
<a name="createTemplateLoader-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createTemplateLoader</h4>
<pre>protected&nbsp;<a href="../../../freemarker/cache/TemplateLoader.html" title="interface in freemarker.cache">TemplateLoader</a>&nbsp;createTemplateLoader(java.lang.String&nbsp;templatePath)
throws java.io.IOException</pre>
<div class="block">Create the template loader. The default implementation will create a <a href="../../../freemarker/cache/ClassTemplateLoader.html" title="class in freemarker.cache"><code>ClassTemplateLoader</code></a> if the template
path starts with <code>"class://"</code>, a <a href="../../../freemarker/cache/FileTemplateLoader.html" title="class in freemarker.cache"><code>FileTemplateLoader</code></a> if the template path starts with
<code>"file://"</code>, and a <a href="../../../freemarker/cache/WebappTemplateLoader.html" title="class in freemarker.cache"><code>WebappTemplateLoader</code></a> otherwise. Also, if
<a href="../../../freemarker/template/Configuration.html#Configuration-freemarker.template.Version-"><code>incompatible_improvements</code></a> is 2.3.22 or higher,
it will create a <a href="../../../freemarker/cache/MultiTemplateLoader.html" title="class in freemarker.cache"><code>MultiTemplateLoader</code></a> if the template path starts with <code>"["</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>templatePath</code> - the template path to create a loader for</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a newly created template loader</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="doGet-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doGet</h4>
<pre>public&nbsp;void&nbsp;doGet(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>doGet</code>&nbsp;in class&nbsp;<code>javax.servlet.http.HttpServlet</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="doPost-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doPost</h4>
<pre>public&nbsp;void&nbsp;doPost(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>doPost</code>&nbsp;in class&nbsp;<code>javax.servlet.http.HttpServlet</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="processEnvironment-freemarker.core.Environment-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processEnvironment</h4>
<pre>protected&nbsp;void&nbsp;processEnvironment(<a href="../../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws <a href="../../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a>,
java.io.IOException</pre>
<div class="block">This is the method that actually executes the template. The original implementation coming from
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> simply calls <a href="../../../freemarker/core/Environment.html#process--"><code>Environment.process()</code></a>. Overriding this method allows you to
prepare the <a href="../../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> before the execution, or extract information from the <a href="../../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> after
the execution. It also allows you to capture exceptions throw by the template.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>env</code> - The <a href="../../../freemarker/core/Environment.html" title="class in freemarker.core"><code>Environment</code></a> object already set up to execute the template. You only have to call
<a href="../../../freemarker/core/Environment.html#process--"><code>Environment.process()</code></a> and the output will be produced by the template.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
<dd><code>java.io.IOException</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="deduceLocale-java.lang.String-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deduceLocale</h4>
<pre>protected&nbsp;java.util.Locale&nbsp;deduceLocale(java.lang.String&nbsp;templatePath,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws javax.servlet.ServletException</pre>
<div class="block">Returns the locale used for the <a href="../../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-"><code>Configuration.getTemplate(String, Locale)</code></a> call (as far as the
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_LOCALE">"OverrideResponseLocale"</a> Servlet init-param allows that). The base implementation in
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> simply returns the <code>locale</code> setting of the configuration. Override this method to
provide different behavior, for example, to use the locale indicated in the HTTP request.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>templatePath</code> - The template path (template name) as it will be passed to <a href="../../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>.
(Not to be confused with the servlet init-param of identical name; they aren't related.)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code> - Can be thrown since 2.3.22, if the locale can't be deduced from the URL.</dd>
</dl>
</li>
</ul>
<a name="createModel-freemarker.template.ObjectWrapper-javax.servlet.ServletContext-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createModel</h4>
<pre>protected&nbsp;<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;createModel(<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;objectWrapper,
javax.servlet.ServletContext&nbsp;servletContext,
javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="createTaglibFactory-freemarker.template.ObjectWrapper-javax.servlet.ServletContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createTaglibFactory</h4>
<pre>protected&nbsp;<a href="../../../freemarker/ext/jsp/TaglibFactory.html" title="class in freemarker.ext.jsp">TaglibFactory</a>&nbsp;createTaglibFactory(<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;objectWrapper,
javax.servlet.ServletContext&nbsp;servletContext)
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block">Called to create the <a href="../../../freemarker/ext/jsp/TaglibFactory.html" title="class in freemarker.ext.jsp"><code>TaglibFactory</code></a> once per servlet context.
The default implementation configures it based on the servlet-init parameters and various other environmental
settings, so if you override this method, you should call super, then adjust the result.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="createDefaultClassPathTlds--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDefaultClassPathTlds</h4>
<pre>protected&nbsp;java.util.List&nbsp;createDefaultClassPathTlds()</pre>
<div class="block">Creates the default of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_CLASSPATH_TLDS">"ClasspathTlds"</a> init-param; if this init-param is specified, it
will be appended <em>after</em> the default, not replace it.
<p>
The implementation in <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> returns <a href="../../../freemarker/ext/jsp/TaglibFactory.html#DEFAULT_CLASSPATH_TLDS"><code>TaglibFactory.DEFAULT_CLASSPATH_TLDS</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <code>List</code> of <code>String</code>-s; not <code>null</code>.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="createDefaultMetaInfTldSources--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDefaultMetaInfTldSources</h4>
<pre>protected&nbsp;java.util.List&nbsp;createDefaultMetaInfTldSources()</pre>
<div class="block">Creates the default of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_META_INF_TLD_LOCATIONS">"MetaInfTldSources"</a> init-param; if this init-param is
specified, it will completelly <em>replace</em> the default value.
<p>
The implementation in <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> returns <a href="../../../freemarker/ext/jsp/TaglibFactory.html#DEFAULT_META_INF_TLD_SOURCES"><code>TaglibFactory.DEFAULT_META_INF_TLD_SOURCES</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <code>List</code> of <a href="../../../freemarker/ext/jsp/TaglibFactory.MetaInfTldSource.html" title="class in freemarker.ext.jsp"><code>TaglibFactory.MetaInfTldSource</code></a>-s; not <code>null</code>.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="requestUrlToTemplatePath-javax.servlet.http.HttpServletRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requestUrlToTemplatePath</h4>
<pre>protected&nbsp;java.lang.String&nbsp;requestUrlToTemplatePath(javax.servlet.http.HttpServletRequest&nbsp;request)
throws javax.servlet.ServletException</pre>
<div class="block">Maps the request URL to a template path (template name) that is passed to
<a href="../../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-"><code>Configuration.getTemplate(String, Locale)</code></a>. 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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - The currently processed HTTP request</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The template path (template name); can't be <code>null</code>. This is what's passed to
<a href="../../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a> later. (Not to be confused with the <code>templatePath</code>
servlet init-param of identical name; that basically specifies the "virtual file system" to which this
will be relative to.)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code> - Can be thrown since 2.3.22, if the template path can't be deduced from the URL.</dd>
</dl>
</li>
</ul>
<a name="preprocessRequest-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>preprocessRequest</h4>
<pre>protected&nbsp;boolean&nbsp;preprocessRequest(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<div class="block">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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the HTTP request</dd>
<dd><code>response</code> - the HTTP response</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true to indicate this method has processed the request entirely,
and that the further request processing should not take place.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="createConfiguration--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createConfiguration</h4>
<pre>protected&nbsp;<a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template">Configuration</a>&nbsp;createConfiguration()</pre>
<div class="block">Creates the FreeMarker <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> singleton and (when overidden) maybe sets its defaults. Servlet
init-params will be applied later, and thus can overwrite the settings specified here.
<p>
By overriding this method you can set your preferred <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> setting defaults, as only the settings
for which an init-param was specified will be overwritten later. (Note that <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> also has
its own defaults for a few settings, but since 2.3.22, the servlet detects if those settings were already set
here and then it won't overwrite them.)
<p>
The default implementation simply creates a new instance with <a href="../../../freemarker/template/Configuration.html#Configuration--"><code>Configuration.Configuration()</code></a> and returns
it.</div>
</li>
</ul>
<a name="setConfigurationDefaults--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setConfigurationDefaults</h4>
<pre>protected&nbsp;void&nbsp;setConfigurationDefaults()</pre>
<div class="block">Sets the defaults of the configuration that are specific to the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> subclass.
This is called after the common (wired in) <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> setting defaults was set, also the</div>
</li>
</ul>
<a name="createObjectWrapper--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createObjectWrapper</h4>
<pre>protected&nbsp;<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;createObjectWrapper()</pre>
<div class="block">Called from <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#init--"><code>init()</code></a> to create the <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a>; to customzie this aspect, in most cases you
should override <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultObjectWrapper--"><code>createDefaultObjectWrapper()</code></a> instead. Overriding this method is necessary when you want
to customize how the <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> is created <em>from the init-param values</em>, or you want to do some
post-processing (like checking) on the created <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a>. To customize init-param interpretation,
call <code>GenericServlet.getInitParameter(String)</code> with <a href="../../../freemarker/core/Configurable.html#OBJECT_WRAPPER_KEY"><code>Configurable.OBJECT_WRAPPER_KEY</code></a> as argument, and see if it
returns a value that you want to interpret yourself. If was <code>null</code> or you don't want to interpret the
value, fall back to the super method.
<p>
The default implementation interprets the <code>object_wrapper</code> servlet init-param with
calling <a href="../../../freemarker/core/Configurable.html#setSetting-java.lang.String-java.lang.String-"><code>Configurable.setSetting(String, String)</code></a> (see valid values there), or if there's no such servlet
init-param, then it calls <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createDefaultObjectWrapper--"><code>createDefaultObjectWrapper()</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> that will be used for adapting request, session, and servlet context attributes
to <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s, and also as the object wrapper setting of <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>.</dd>
</dl>
</li>
</ul>
<a name="createDefaultObjectWrapper--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDefaultObjectWrapper</h4>
<pre>protected&nbsp;<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;createDefaultObjectWrapper()</pre>
<div class="block">Override this to specify what the default <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> will be when the
<code>object_wrapper</code> Servlet init-param wasn't specified. Note that this is called by
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createConfiguration--"><code>createConfiguration()</code></a>, and so if that was also overidden but improperly then this method might won't be
ever called. Also note that if you set the <code>object_wrapper</code> in <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createConfiguration--"><code>createConfiguration()</code></a>, then this
won't be called, since then that has already specified the default.
<p>
The default implementation calls <a href="../../../freemarker/template/Configuration.html#getDefaultObjectWrapper-freemarker.template.Version-"><code>Configuration.getDefaultObjectWrapper(freemarker.template.Version)</code></a>. You
should also pass in the version paramter when creating an <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> that supports that. You can get
the version by calling <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#getConfiguration--"><code>getConfiguration()</code></a> and then <a href="../../../freemarker/template/Configuration.html#getIncompatibleImprovements--"><code>Configuration.getIncompatibleImprovements()</code></a>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="getObjectWrapper--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getObjectWrapper</h4>
<pre>protected&nbsp;<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;getObjectWrapper()</pre>
<div class="block">Should be final; don't override it. Override <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createObjectWrapper--"><code>createObjectWrapper()</code></a> instead.</div>
</li>
</ul>
<a name="getTemplatePath--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTemplatePath</h4>
<pre>@Deprecated
protected final&nbsp;java.lang.String&nbsp;getTemplatePath()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Not called by FreeMarker code, and there's no point to override this (unless to cause confusion).</span></div>
<div class="block">The value of the <code>TemplatePath</code> init-param. <code>null</code> if the <code>template_loader</code> setting was set in
a custom <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createConfiguration--"><code>createConfiguration()</code></a>.</div>
</li>
</ul>
<a name="createRequestParametersHashModel-javax.servlet.http.HttpServletRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createRequestParametersHashModel</h4>
<pre>protected&nbsp;<a href="../../../freemarker/ext/servlet/HttpRequestParametersHashModel.html" title="class in freemarker.ext.servlet">HttpRequestParametersHashModel</a>&nbsp;createRequestParametersHashModel(javax.servlet.http.HttpServletRequest&nbsp;request)</pre>
</li>
</ul>
<a name="initializeServletContext-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeServletContext</h4>
<pre>protected&nbsp;void&nbsp;initializeServletContext(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<div class="block">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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the actual HTTP request</dd>
<dd><code>response</code> - the actual HTTP response</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="initializeSession-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeSession</h4>
<pre>protected&nbsp;void&nbsp;initializeSession(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<div class="block">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's not invoked when a
replicated session is reinstantiated in another servlet container.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the actual HTTP request</dd>
<dd><code>response</code> - the actual HTTP response</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="preTemplateProcess-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-freemarker.template.Template-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>preTemplateProcess</h4>
<pre>protected&nbsp;boolean&nbsp;preTemplateProcess(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response,
<a href="../../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;template,
<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;model)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<div class="block">Called before the execution is passed to <a href="../../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process(Object, java.io.Writer)</code></a>. This is a
generic hook you might use in subclasses to perform a specific action before the template is processed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - The HTTP request that we will response to.</dd>
<dd><code>response</code> - The HTTP response. The HTTP headers are already initialized here, such as the <code>conteType</code> and
the <code>responseCharacterEncoding</code> are already set, but you can do the final adjustments here. The
response <code>Writer</code> isn't created yet, so changing HTTP headers and buffering parameters works.</dd>
<dd><code>template</code> - The template that will get executed</dd>
<dd><code>model</code> - The data model that will be passed to the template. By default this will be an
<a href="../../../freemarker/ext/servlet/AllHttpScopesHashModel.html" title="class in freemarker.ext.servlet"><code>AllHttpScopesHashModel</code></a> (which is a <a href="../../../freemarker/template/SimpleHash.html" title="class in freemarker.template"><code>SimpleHash</code></a> subclass). Thus, you
can add new variables to the data-model with the
<a href="../../../freemarker/template/SimpleHash.html#put-java.lang.String-java.lang.Object-"><code>SimpleHash.put(String, Object)</code></a> subclass) method. However, to adjust the
data-model, overriding
<a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#createModel-freemarker.template.ObjectWrapper-javax.servlet.ServletContext-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-"><code>createModel(ObjectWrapper, ServletContext, HttpServletRequest, HttpServletResponse)</code></a> is
probably a more appropriate place.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true to process the template, false to suppress template processing.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="postTemplateProcess-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-freemarker.template.Template-freemarker.template.TemplateModel-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>postTemplateProcess</h4>
<pre>protected&nbsp;void&nbsp;postTemplateProcess(javax.servlet.http.HttpServletRequest&nbsp;request,
javax.servlet.http.HttpServletResponse&nbsp;response,
<a href="../../../freemarker/template/Template.html" title="class in freemarker.template">Template</a>&nbsp;template,
<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;data)
throws javax.servlet.ServletException,
java.io.IOException</pre>
<div class="block">Called after the execution returns from <a href="../../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process(Object, java.io.Writer)</code></a>.
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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the actual HTTP request</dd>
<dd><code>response</code> - the actual HTTP response</dd>
<dd><code>template</code> - the template that was executed</dd>
<dd><code>data</code> - the data that was passed to the template</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="getConfiguration--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConfiguration</h4>
<pre>protected&nbsp;<a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template">Configuration</a>&nbsp;getConfiguration()</pre>
<div class="block">Returns the <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> object used by this servlet.
Please don't forget that <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a> is not thread-safe
when you modify it.</div>
</li>
</ul>
<a name="getDefaultOverrideResponseContentType--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getDefaultOverrideResponseContentType</h4>
<pre>protected&nbsp;java.lang.String&nbsp;getDefaultOverrideResponseContentType()</pre>
<div class="block">Returns the default value of the <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_OVERRIDE_RESPONSE_CONTENT_TYPE">"OverrideResponseContentType"</a> Servlet init-param.
The method inherited from <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html" title="class in freemarker.ext.servlet"><code>FreemarkerServlet</code></a> returns <a href="../../../freemarker/ext/servlet/FreemarkerServlet.html#INIT_PARAM_VALUE_ALWAYS">"always"</a>; subclasses my
override this.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FreemarkerServlet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../freemarker/ext/servlet/AllHttpScopesHashModel.html" title="class in freemarker.ext.servlet"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../freemarker/ext/servlet/HttpRequestHashModel.html" title="class in freemarker.ext.servlet"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?freemarker/ext/servlet/FreemarkerServlet.html" target="_top">Frames</a></li>
<li><a href="FreemarkerServlet.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>