org.apache.struts2.dispatcher
Class Dispatcher

java.lang.Object
  extended by org.apache.struts2.dispatcher.Dispatcher

public class Dispatcher
extends Object

A utility class the actual dispatcher delegates most of its tasks to. Each instance of the primary dispatcher holds an instance of this dispatcher to be shared for all requests.

See Also:
FilterDispatcher

Nested Class Summary
static class Dispatcher.Locator
          Provide an accessor class for static XWork utility.
 
Constructor Summary
Dispatcher(javax.servlet.ServletContext servletContext, Map<String,String> initParams)
          Create the Dispatcher instance for a given ServletContext and set of initialization parameters.
 
Method Summary
static void addDispatcherListener(DispatcherListener listener)
          Add a dispatcher lifecycle listener.
 void cleanup()
          Releases all instances bound to this dispatcher instance.
 void cleanUpRequest(javax.servlet.http.HttpServletRequest request)
          Removes all the files created by MultiPartRequestWrapper.
protected  ConfigurationManager createConfigurationManager(String name)
           
 Map<String,Object> createContextMap(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionMapping mapping, javax.servlet.ServletContext context)
          Create a context map containing all the wrapped request objects
 HashMap<String,Object> createContextMap(Map requestMap, Map parameterMap, Map sessionMap, Map applicationMap, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.ServletContext servletContext)
          Merge all application and servlet attributes into a single HashMap to represent the entire Action context.
protected  XmlConfigurationProvider createStrutsXmlConfigurationProvider(String filename, boolean errorIfMissing, javax.servlet.ServletContext ctx)
           
protected  XmlConfigurationProvider createXmlConfigurationProvider(String filename, boolean errorIfMissing)
           
 ConfigurationManager getConfigurationManager()
          Expose the ConfigurationManager instance.
 Container getContainer()
          Expose the dependency injection container.
static Dispatcher getInstance()
          Provide the dispatcher instance for the current thread.
 void init()
          Load configurations, including both XML and zero-configuration strategies, and update optional settings, including whether to reload configurations and resource files.
 void prepare(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Prepare a request, including setting the encoding and locale.
static void removeDispatcherListener(DispatcherListener listener)
          Remove a specific dispatcher lifecycle listener.
 void sendError(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.ServletContext ctx, int code, Exception e)
          Send an HTTP error response code.
 void serviceAction(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.ServletContext context, ActionMapping mapping)
          Load Action class for mapping and invoke the appropriate Action method, or go directly to the Result.
 void setConfigurationManager(ConfigurationManager mgr)
          Modify the ConfigurationManager instance
 void setDefaultEncoding(String val)
          Modify state of StrutsConstants.STRUTS_I18N_ENCODING setting.
 void setDefaultLocale(String val)
          Modify state of StrutsConstants.STRUTS_LOCALE setting.
 void setDevMode(String mode)
          Modify state of StrutsConstants.STRUTS_DEVMODE setting.
static void setInstance(Dispatcher instance)
          Store the dispatcher instance for this thread.
 void setMultipartHandler(String val)
           
 void setMultipartSaveDir(String val)
          Modify state of StrutsConstants.STRUTS_MULTIPART_SAVEDIR setting.
 void setValueStackFactory(ValueStackFactory valueStackFactory)
           
 javax.servlet.http.HttpServletRequest wrapRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.ServletContext servletContext)
          Wrap and return the given request or return the original request object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Dispatcher

public Dispatcher(javax.servlet.ServletContext servletContext,
                  Map<String,String> initParams)
Create the Dispatcher instance for a given ServletContext and set of initialization parameters.

Parameters:
servletContext - Our servlet context
initParams - The set of initialization parameters
Method Detail

getInstance

public static Dispatcher getInstance()
Provide the dispatcher instance for the current thread.

Returns:
The dispatcher instance

setInstance

public static void setInstance(Dispatcher instance)
Store the dispatcher instance for this thread.

Parameters:
instance - The instance

addDispatcherListener

public static void addDispatcherListener(DispatcherListener listener)
Add a dispatcher lifecycle listener.

Parameters:
listener - The listener to add

removeDispatcherListener

public static void removeDispatcherListener(DispatcherListener listener)
Remove a specific dispatcher lifecycle listener.

Parameters:
listener - The listener

setDevMode

public void setDevMode(String mode)
Modify state of StrutsConstants.STRUTS_DEVMODE setting.

Parameters:
mode - New setting

setDefaultLocale

public void setDefaultLocale(String val)
Modify state of StrutsConstants.STRUTS_LOCALE setting.

Parameters:
val - New setting

setDefaultEncoding

public void setDefaultEncoding(String val)
Modify state of StrutsConstants.STRUTS_I18N_ENCODING setting.

Parameters:
val - New setting

setMultipartSaveDir

public void setMultipartSaveDir(String val)
Modify state of StrutsConstants.STRUTS_MULTIPART_SAVEDIR setting.

Parameters:
val - New setting

setMultipartHandler

public void setMultipartHandler(String val)

setValueStackFactory

public void setValueStackFactory(ValueStackFactory valueStackFactory)

cleanup

public void cleanup()
Releases all instances bound to this dispatcher instance.


createXmlConfigurationProvider

protected XmlConfigurationProvider createXmlConfigurationProvider(String filename,
                                                                  boolean errorIfMissing)

createStrutsXmlConfigurationProvider

protected XmlConfigurationProvider createStrutsXmlConfigurationProvider(String filename,
                                                                        boolean errorIfMissing,
                                                                        javax.servlet.ServletContext ctx)

init

public void init()
Load configurations, including both XML and zero-configuration strategies, and update optional settings, including whether to reload configurations and resource files.


createConfigurationManager

protected ConfigurationManager createConfigurationManager(String name)

serviceAction

public void serviceAction(javax.servlet.http.HttpServletRequest request,
                          javax.servlet.http.HttpServletResponse response,
                          javax.servlet.ServletContext context,
                          ActionMapping mapping)
                   throws javax.servlet.ServletException
Load Action class for mapping and invoke the appropriate Action method, or go directly to the Result.

This method first creates the action context from the given parameters, and then loads an ActionProxy from the given action name and namespace. After that, the Action method is executed and output channels through the response object. Actions not found are sent back to the user via the sendError(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.ServletContext, int, java.lang.Exception) method, using the 404 return code. All other errors are reported by throwing a ServletException.

Parameters:
request - the HttpServletRequest object
response - the HttpServletResponse object
mapping - the action mapping object
context - Our ServletContext object
Throws:
javax.servlet.ServletException - when an unknown error occurs (not a 404, but typically something that would end up as a 5xx by the servlet container)

createContextMap

public Map<String,Object> createContextMap(javax.servlet.http.HttpServletRequest request,
                                           javax.servlet.http.HttpServletResponse response,
                                           ActionMapping mapping,
                                           javax.servlet.ServletContext context)
Create a context map containing all the wrapped request objects

Parameters:
request - The servlet request
response - The servlet response
mapping - The action mapping
context - The servlet context
Returns:
A map of context objects

createContextMap

public HashMap<String,Object> createContextMap(Map requestMap,
                                               Map parameterMap,
                                               Map sessionMap,
                                               Map applicationMap,
                                               javax.servlet.http.HttpServletRequest request,
                                               javax.servlet.http.HttpServletResponse response,
                                               javax.servlet.ServletContext servletContext)
Merge all application and servlet attributes into a single HashMap to represent the entire Action context.

Parameters:
requestMap - a Map of all request attributes.
parameterMap - a Map of all request parameters.
sessionMap - a Map of all session attributes.
applicationMap - a Map of all servlet context attributes.
request - the HttpServletRequest object.
response - the HttpServletResponse object.
servletContext - the ServletContextmapping object.
Returns:
a HashMap representing the Action context.

prepare

public void prepare(javax.servlet.http.HttpServletRequest request,
                    javax.servlet.http.HttpServletResponse response)
Prepare a request, including setting the encoding and locale.

Parameters:
request - The request
response - The response

wrapRequest

public javax.servlet.http.HttpServletRequest wrapRequest(javax.servlet.http.HttpServletRequest request,
                                                         javax.servlet.ServletContext servletContext)
                                                  throws IOException
Wrap and return the given request or return the original request object.

This method transparently handles multipart data as a wrapped class around the given request. Override this method to handle multipart requests in a special way or to handle other types of requests. Note, MultiPartRequestWrapper is flexible - look first to that object before overriding this method to handle multipart data.

Parameters:
request - the HttpServletRequest object.
servletContext - Our ServletContext object
Returns:
a wrapped request or original request.
Throws:
IOException - on any error.
See Also:
MultiPartRequestWrapper

cleanUpRequest

public void cleanUpRequest(javax.servlet.http.HttpServletRequest request)
                    throws IOException
Removes all the files created by MultiPartRequestWrapper.

Parameters:
request - the HttpServletRequest object.
Throws:
IOException - on any error.
See Also:
MultiPartRequestWrapper

sendError

public void sendError(javax.servlet.http.HttpServletRequest request,
                      javax.servlet.http.HttpServletResponse response,
                      javax.servlet.ServletContext ctx,
                      int code,
                      Exception e)
Send an HTTP error response code.

Parameters:
request - the HttpServletRequest object.
response - the HttpServletResponse object.
code - the HttpServletResponse error code (see HttpServletResponse for possible error codes).
e - the Exception that is reported.
ctx - the ServletContext object.

getConfigurationManager

public ConfigurationManager getConfigurationManager()
Expose the ConfigurationManager instance.

Returns:
The instance

setConfigurationManager

public void setConfigurationManager(ConfigurationManager mgr)
Modify the ConfigurationManager instance

Parameters:
mgr - The configuration manager

getContainer

public Container getContainer()
Expose the dependency injection container.

Returns:
Our dependency injection container


Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.