Class VelocityViewServlet
- java.lang.Object
-
- javax.servlet.GenericServlet
-
- javax.servlet.http.HttpServlet
-
- org.apache.velocity.tools.view.VelocityViewServlet
-
- All Implemented Interfaces:
Serializable,javax.servlet.Servlet,javax.servlet.ServletConfig
- Direct Known Subclasses:
VelocityLayoutServlet,VelocityViewServlet
public class VelocityViewServlet extends javax.servlet.http.HttpServletA servlet to process Velocity templates. This is comparable to the the JspServlet for JSP-based applications.
The servlet provides the following features:
- renders Velocity templates
- provides support for an auto-loaded, configurable toolbox
- provides transparent access to the servlet request attributes, servlet session attributes and servlet context attributes by auto-searching them
- logs to the logging facility of the servlet API
VelocityViewServlet supports the following configuration parameters in web.xml:
- org.apache.velocity.tools
- Path and name of the toolbox configuration file. The path must be relative to the web application root directory. If this parameter is not found, the servlet will check for a toolbox file at '/WEB-INF/tools.xml'.
- org.apache.velocity.properties
- Path and name of the Velocity configuration file. The path must be relative to the web application root directory. If this parameter is not present, Velocity will check for a properties file at '/WEB-INF/velocity.properties'. If no file is found there, then Velocity is initialized with the settings in the classpath at 'org.apache.velocity.tools.view.velocity.properties'.
- org.apache.velocity.tools.shared.config
- By default, this is
true. If set tofalse, then theVelocityViewused by this servlet will not be shared withVelocityViewFilters, other VelocityViewServlets orVelocityViewTags in the application. - org.apache.velocity.tools.loadDefaults
- By default, this is
true. If set tofalse, then the default toolbox configuration will not be added to your (if any) custom configuration. NOTE: The default configuration will also be suppressed if you are using a deprecated toolbox.xml format and do not explicitly set this totrue. - org.apache.velocity.tools.cleanConfiguration
- By default, this is
false. If set totrue, then then the final toolbox configuration (the combination of any custom one(s) provided by yourself and/or the default configuration(s)) will have all invalid tools, properties, and/or data removed prior to configuring the ToolboxFactory for this servlet by aConfigurationCleaner - org.apache.velocity.tools.bufferOutput
- By default, the processed templates are merged directly into
the
HttpServletResponse's writer. If this parameter is set totrue, then the output of the merge process will be buffered before being fed to the response. This allows theerror(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Throwable)method to be overridden to return a "500 Internal Server Error" or at least not return any of the failed request content. Essentially, setting this totruedegrades performance in order to enable a more "correct" error response"
- Version:
- $Id$
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static StringBUFFER_OUTPUT_PARAM
-
Constructor Summary
Constructors Constructor Description VelocityViewServlet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.velocity.context.ContextcreateContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)voiddoGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Handles GET - calls doRequest()voiddoPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Handle a POST request - calls doRequest()protected voiddoRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Handles with both GET and POST requestsprotected voiderror(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Throwable e)Invoked when there is an error thrown in any part of doRequest() processing.protected voidfillContext(org.apache.velocity.context.Context context, javax.servlet.http.HttpServletRequest request)protected StringfindInitParameter(javax.servlet.ServletConfig config, String key)Looks up an init parameter with the specified key in either the ServletConfig or, failing that, in the ServletContext.protected org.apache.velocity.runtime.log.LoggetLog()protected org.apache.velocity.TemplategetTemplate(String name)protected org.apache.velocity.TemplategetTemplate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)protected StringgetVelocityProperty(String name, String alternate)protected VelocityViewgetVelocityView()protected org.apache.velocity.TemplatehandleRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.apache.velocity.context.Context ctx)This was a common extension point, but now it is usually simpler to overridefillContext(org.apache.velocity.context.Context, javax.servlet.http.HttpServletRequest)to add custom things to theContextor override agetTemplate(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)method to change howTemplates are retrieved.voidinit(javax.servlet.ServletConfig config)Initializes servlet and VelocityView used to process requests.protected voidmanageResourceNotFound(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.apache.velocity.exception.ResourceNotFoundException e)Manages theResourceNotFoundExceptionto send an HTTP 404 result when needed.protected voidmergeTemplate(org.apache.velocity.Template template, org.apache.velocity.context.Context context, javax.servlet.http.HttpServletResponse response)protected voidrequestCleanup(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.apache.velocity.context.Context context)Cleanup routine called at the end of the request processing sequence allows a derived class to do resource cleanup or other end of process cycle tasks.protected voidsetContentType(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Sets the content type of the response.protected voidsetVelocityView(VelocityView view)-
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
-
-
-
-
Field Detail
-
BUFFER_OUTPUT_PARAM
public static final String BUFFER_OUTPUT_PARAM
- See Also:
- Constant Field Values
-
-
Method Detail
-
init
public void init(javax.servlet.ServletConfig config) throws javax.servlet.ServletExceptionInitializes servlet and VelocityView used to process requests. Called by the servlet container on loading.
- Specified by:
initin interfacejavax.servlet.Servlet- Overrides:
initin classjavax.servlet.GenericServlet- Parameters:
config- servlet configuation- Throws:
javax.servlet.ServletException
-
findInitParameter
protected String findInitParameter(javax.servlet.ServletConfig config, String key)
Looks up an init parameter with the specified key in either the ServletConfig or, failing that, in the ServletContext.
-
getVelocityView
protected VelocityView getVelocityView()
-
setVelocityView
protected void setVelocityView(VelocityView view)
-
getLog
protected org.apache.velocity.runtime.log.Log getLog()
-
doGet
public void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOExceptionHandles GET - calls doRequest()- Overrides:
doGetin classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionIOException
-
doPost
public void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOExceptionHandle a POST request - calls doRequest()- Overrides:
doPostin classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionIOException
-
doRequest
protected void doRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws IOExceptionHandles with both GET and POST requests- Parameters:
request- HttpServletRequest object containing client requestresponse- HttpServletResponse object for the response- Throws:
IOException
-
handleRequest
protected org.apache.velocity.Template handleRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.apache.velocity.context.Context ctx)This was a common extension point, but now it is usually simpler to override
fillContext(org.apache.velocity.context.Context, javax.servlet.http.HttpServletRequest)to add custom things to theContextor override agetTemplate(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)method to change howTemplates are retrieved. This is only recommended for more complicated use-cases.- Parameters:
request- client requestresponse- client responsectx- VelocityContext to fill- Returns:
- Velocity Template object or null
-
createContext
protected org.apache.velocity.context.Context createContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
fillContext
protected void fillContext(org.apache.velocity.context.Context context, javax.servlet.http.HttpServletRequest request)
-
setContentType
protected void setContentType(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)Sets the content type of the response. This is available to be overriden by a derived class.The default implementation is :
response.setContentType(getVelocityView().getDefaultContentType());where defaultContentType is set to the value of the default.contentType property, or "text/html" if that was not set for theVelocityView.- Parameters:
request- servlet request from clientresponse- servlet reponse to client
-
getTemplate
protected org.apache.velocity.Template getTemplate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
getTemplate
protected org.apache.velocity.Template getTemplate(String name)
-
mergeTemplate
protected void mergeTemplate(org.apache.velocity.Template template, org.apache.velocity.context.Context context, javax.servlet.http.HttpServletResponse response) throws IOException- Throws:
IOException
-
error
protected void error(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Throwable e)Invoked when there is an error thrown in any part of doRequest() processing.
Default will send a simple HTML response indicating there was a problem.- Parameters:
request- original HttpServletRequest from servlet container.response- HttpServletResponse object from servlet container.e- Exception that was thrown by some other part of process.
-
manageResourceNotFound
protected void manageResourceNotFound(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.apache.velocity.exception.ResourceNotFoundException e) throws IOExceptionManages theResourceNotFoundExceptionto send an HTTP 404 result when needed.- Parameters:
request- The request object.response- The response object.e- The exception to check.- Throws:
IOException- If something goes wrong when sending the HTTP error.
-
requestCleanup
protected void requestCleanup(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.apache.velocity.context.Context context)Cleanup routine called at the end of the request processing sequence allows a derived class to do resource cleanup or other end of process cycle tasks. This default implementation does nothing.- Parameters:
request- servlet request from clientresponse- servlet responsecontext- Context that was merged with the requested template
-
-