org.apache.struts.action
Class RequestProcessor

java.lang.Object
  |
  +--org.apache.struts.action.RequestProcessor
Direct Known Subclasses:
TilesRequestProcessor

public class RequestProcessor
extends java.lang.Object

RequestProcessor contains the processing logic that the ActionServlet performs as it receives each servlet request from the container. You can customize the request processing behavior by subclassing this class and overriding the method(s) whose behavior you are interested in changing.

Since:
Struts 1.1
Version:
$Rev: 379703 $ $Date: 2006-02-22 06:17:05 +0000 (Wed, 22 Feb 2006) $

Field Summary
protected  java.util.HashMap actions
          The set of Action instances that have been created and initialized, keyed by the fully qualified Java class name of the Action class.
static java.lang.String INCLUDE_PATH_INFO
          The request attribute under which the path information is stored for processing during a RequestDispatcher.include call.
static java.lang.String INCLUDE_SERVLET_PATH
          The request attribute under which the servlet path information is stored for processing during a RequestDispatcher.include call.
protected static org.apache.commons.logging.Log log
          Commons Logging instance.
protected  ModuleConfig moduleConfig
          The ModuleConfiguration with which we are associated.
protected  ActionServlet servlet
          The servlet with which we are associated.
 
Constructor Summary
RequestProcessor()
           
 
Method Summary
 void destroy()
          Clean up in preparation for a shutdown of this application.
protected  void doForward(java.lang.String uri, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Do a forward to specified URI using a RequestDispatcher.
protected  void doInclude(java.lang.String uri, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Do an include of specified URI using a RequestDispatcher.
protected  MessageResources getInternal()
          Return the MessageResources instance containing our internal message strings.
protected  javax.servlet.ServletContext getServletContext()
          Return the ServletContext for the web application in which we are running.
 void init(ActionServlet servlet, ModuleConfig moduleConfig)
          Initialize this request processor instance.
protected  void internalModuleRelativeForward(java.lang.String uri, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Do a module relative forward to specified URI using request dispatcher.
protected  void internalModuleRelativeInclude(java.lang.String uri, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Do a module relative include to specified URI using request dispatcher.
protected  void log(java.lang.String message)
          Deprecated. Use commons-logging instead. This will be removed in a release after Struts 1.2.
protected  void log(java.lang.String message, java.lang.Throwable exception)
          Deprecated. Use commons-logging instead. This will be removed in a release after Struts 1.2.
 void process(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Process an HttpServletRequest and create the corresponding HttpServletResponse or dispatch to another resource.
protected  Action processActionCreate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionMapping mapping)
          Return an Action instance that will be used to process the current request, creating a new one if necessary.
protected  ActionForm processActionForm(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionMapping mapping)
          Retrieve and return the ActionForm associated with this mapping, creating and retaining one if necessary.
protected  ActionForward processActionPerform(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Action action, ActionForm form, ActionMapping mapping)
          Ask the specified Action instance to handle this request.
protected  void processCachedMessages(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Removes any ActionMessages object stored in the session under Globals.MESSAGE_KEY and Globals.ERROR_KEY if the messages' isAccessed method returns true.
protected  void processContent(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Set the default content type (with optional character encoding) for all responses if requested.
protected  ActionForward processException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Exception exception, ActionForm form, ActionMapping mapping)
          Ask our exception handler to handle the exception.
protected  boolean processForward(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionMapping mapping)
          Process a forward requested by this mapping (if any).
protected  void processForwardConfig(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ForwardConfig forward)
          Forward or redirect to the specified destination, by the specified mechanism.
protected  boolean processInclude(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionMapping mapping)
          Process an include requested by this mapping (if any).
protected  void processLocale(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Automatically select a Locale for the current user, if requested.
protected  ActionMapping processMapping(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String path)
          Select the mapping used to process the selection path for this request.
protected  javax.servlet.http.HttpServletRequest processMultipart(javax.servlet.http.HttpServletRequest request)
          If this is a multipart request, wrap it with a special wrapper.
protected  void processNoCache(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Set the no-cache headers for all responses, if requested.
protected  java.lang.String processPath(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Identify and return the path component (from the request URI) that we will use to select an ActionMapping with which to dispatch.
protected  void processPopulate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionForm form, ActionMapping mapping)
          Populate the properties of the specified ActionForm instance from the request parameters included with this request.
protected  boolean processPreprocess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          General-purpose preprocessing hook that can be overridden as required by subclasses.
protected  boolean processRoles(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionMapping mapping)
          If this action is protected by security roles, make sure that the current user possesses at least one of them.
protected  boolean processValidate(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, ActionForm form, ActionMapping mapping)
          If this request was not cancelled, and the request's ActionMapping has not disabled validation, call the validate method of the specified ActionForm, and forward to the input path if there were any errors.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

INCLUDE_PATH_INFO

public static final java.lang.String INCLUDE_PATH_INFO

The request attribute under which the path information is stored for processing during a RequestDispatcher.include call.


INCLUDE_SERVLET_PATH

public static final java.lang.String INCLUDE_SERVLET_PATH

The request attribute under which the servlet path information is stored for processing during a RequestDispatcher.include call.


actions

protected java.util.HashMap actions

The set of Action instances that have been created and initialized, keyed by the fully qualified Java class name of the Action class.


moduleConfig

protected ModuleConfig moduleConfig

The ModuleConfiguration with which we are associated.


log

protected static org.apache.commons.logging.Log log

Commons Logging instance.


servlet

protected ActionServlet servlet

The servlet with which we are associated.

Constructor Detail

RequestProcessor

public RequestProcessor()
Method Detail

destroy

public void destroy()

Clean up in preparation for a shutdown of this application.


init

public void init(ActionServlet servlet,
                 ModuleConfig moduleConfig)
          throws javax.servlet.ServletException

Initialize this request processor instance.

Parameters:
servlet - The ActionServlet we are associated with
moduleConfig - The ModuleConfig we are associated with.
Throws:
javax.servlet.ServletException - If an error occor during initialization

process

public void process(javax.servlet.http.HttpServletRequest request,
                    javax.servlet.http.HttpServletResponse response)
             throws java.io.IOException,
                    javax.servlet.ServletException

Process an HttpServletRequest and create the corresponding HttpServletResponse or dispatch to another resource.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
Throws:
java.io.IOException - if an input/output error occurs
javax.servlet.ServletException - if a processing exception occurs

processActionCreate

protected Action processActionCreate(javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response,
                                     ActionMapping mapping)
                              throws java.io.IOException

Return an Action instance that will be used to process the current request, creating a new one if necessary.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
mapping - The mapping we are using
Throws:
java.io.IOException - if an input/output error occurs

processActionForm

protected ActionForm processActionForm(javax.servlet.http.HttpServletRequest request,
                                       javax.servlet.http.HttpServletResponse response,
                                       ActionMapping mapping)

Retrieve and return the ActionForm associated with this mapping, creating and retaining one if necessary. If there is no ActionForm associated with this mapping, return null.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
mapping - The mapping we are using

processForwardConfig

protected void processForwardConfig(javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response,
                                    ForwardConfig forward)
                             throws java.io.IOException,
                                    javax.servlet.ServletException

Forward or redirect to the specified destination, by the specified mechanism. This method uses a ForwardConfig object instead an ActionForward.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
forward - The ForwardConfig controlling where we go next
Throws:
java.io.IOException - if an input/output error occurs
javax.servlet.ServletException - if a servlet exception occurs

processActionPerform

protected ActionForward processActionPerform(javax.servlet.http.HttpServletRequest request,
                                             javax.servlet.http.HttpServletResponse response,
                                             Action action,
                                             ActionForm form,
                                             ActionMapping mapping)
                                      throws java.io.IOException,
                                             javax.servlet.ServletException

Ask the specified Action instance to handle this request. Return the ActionForward instance (if any) returned by the called Action for further processing.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
action - The Action instance to be used
form - The ActionForm instance to pass to this Action
mapping - The ActionMapping instance to pass to this Action
Throws:
java.io.IOException - if an input/output error occurs
javax.servlet.ServletException - if a servlet exception occurs

processCachedMessages

protected void processCachedMessages(javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response)

Removes any ActionMessages object stored in the session under Globals.MESSAGE_KEY and Globals.ERROR_KEY if the messages' isAccessed method returns true. This allows messages to be stored in the session, display one time, and be released here.

Parameters:
request - The servlet request we are processing.
response - The servlet response we are creating.
Since:
Struts 1.2

processContent

protected void processContent(javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response)

Set the default content type (with optional character encoding) for all responses if requested. NOTE - This header will be overridden automatically if a RequestDispatcher.forward call is ultimately invoked.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating

processException

protected ActionForward processException(javax.servlet.http.HttpServletRequest request,
                                         javax.servlet.http.HttpServletResponse response,
                                         java.lang.Exception exception,
                                         ActionForm form,
                                         ActionMapping mapping)
                                  throws java.io.IOException,
                                         javax.servlet.ServletException

Ask our exception handler to handle the exception. Return the ActionForward instance (if any) returned by the called ExceptionHandler.

Parameters:
request - The servlet request we are processing
response - The servlet response we are processing
exception - The exception being handled
form - The ActionForm we are processing
mapping - The ActionMapping we are using
Throws:
java.io.IOException - if an input/output error occurs
javax.servlet.ServletException - if a servlet exception occurs

processForward

protected boolean processForward(javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response,
                                 ActionMapping mapping)
                          throws java.io.IOException,
                                 javax.servlet.ServletException

Process a forward requested by this mapping (if any). Return true if standard processing should continue, or false if we have already handled this request.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
mapping - The ActionMapping we are using

processInclude

protected boolean processInclude(javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response,
                                 ActionMapping mapping)
                          throws java.io.IOException,
                                 javax.servlet.ServletException

Process an include requested by this mapping (if any). Return true if standard processing should continue, or false if we have already handled this request.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
mapping - The ActionMapping we are using

processLocale

protected void processLocale(javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)

Automatically select a Locale for the current user, if requested. NOTE - configuring Locale selection will trigger the creation of a new HttpSession if necessary.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating

processMapping

protected ActionMapping processMapping(javax.servlet.http.HttpServletRequest request,
                                       javax.servlet.http.HttpServletResponse response,
                                       java.lang.String path)
                                throws java.io.IOException

Select the mapping used to process the selection path for this request. If no mapping can be identified, create an error response and return null.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
path - The portion of the request URI for selecting a mapping
Throws:
java.io.IOException - if an input/output error occurs

processMultipart

protected javax.servlet.http.HttpServletRequest processMultipart(javax.servlet.http.HttpServletRequest request)

If this is a multipart request, wrap it with a special wrapper. Otherwise, return the request unchanged.

Parameters:
request - The HttpServletRequest we are processing

processNoCache

protected void processNoCache(javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response)

Set the no-cache headers for all responses, if requested. NOTE - This header will be overridden automatically if a RequestDispatcher.forward call is ultimately invoked.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating

processPath

protected java.lang.String processPath(javax.servlet.http.HttpServletRequest request,
                                       javax.servlet.http.HttpServletResponse response)
                                throws java.io.IOException

Identify and return the path component (from the request URI) that we will use to select an ActionMapping with which to dispatch. If no such path can be identified, create an error response and return null.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
Throws:
java.io.IOException - if an input/output error occurs

processPopulate

protected void processPopulate(javax.servlet.http.HttpServletRequest request,
                               javax.servlet.http.HttpServletResponse response,
                               ActionForm form,
                               ActionMapping mapping)
                        throws javax.servlet.ServletException

Populate the properties of the specified ActionForm instance from the request parameters included with this request. In addition, request attribute Globals.CANCEL_KEY will be set if the request was submitted with a button created by CancelTag.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
form - The ActionForm instance we are populating
mapping - The ActionMapping we are using
Throws:
javax.servlet.ServletException - if thrown by RequestUtils.populate()

processPreprocess

protected boolean processPreprocess(javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response)

General-purpose preprocessing hook that can be overridden as required by subclasses. Return true if you want standard processing to continue, or false if the response has already been completed. The default implementation does nothing.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating

processRoles

protected boolean processRoles(javax.servlet.http.HttpServletRequest request,
                               javax.servlet.http.HttpServletResponse response,
                               ActionMapping mapping)
                        throws java.io.IOException,
                               javax.servlet.ServletException

If this action is protected by security roles, make sure that the current user possesses at least one of them. Return true to continue normal processing, or false if an appropriate response has been created and processing should terminate.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
mapping - The mapping we are using
Throws:
java.io.IOException - if an input/output error occurs
javax.servlet.ServletException - if a servlet exception occurs

processValidate

protected boolean processValidate(javax.servlet.http.HttpServletRequest request,
                                  javax.servlet.http.HttpServletResponse response,
                                  ActionForm form,
                                  ActionMapping mapping)
                           throws java.io.IOException,
                                  javax.servlet.ServletException,
                                  InvalidCancelException

If this request was not cancelled, and the request's ActionMapping has not disabled validation, call the validate method of the specified ActionForm, and forward to the input path if there were any errors. Return true if we should continue processing, or false if we have already forwarded control back to the input form.

Parameters:
request - The servlet request we are processing
response - The servlet response we are creating
form - The ActionForm instance we are populating
mapping - The ActionMapping we are using
Throws:
java.io.IOException - if an input/output error occurs
javax.servlet.ServletException - if a servlet exception occurs
InvalidCancelException - if a cancellation is attempted without the proper action configuration

internalModuleRelativeForward

protected void internalModuleRelativeForward(java.lang.String uri,
                                             javax.servlet.http.HttpServletRequest request,
                                             javax.servlet.http.HttpServletResponse response)
                                      throws java.io.IOException,
                                             javax.servlet.ServletException

Do a module relative forward to specified URI using request dispatcher. URI is relative to the current module. The real URI is compute by prefixing the module name.

This method is used internally and is not part of the public API. It is advised to not use it in subclasses.

Parameters:
uri - Module-relative URI to forward to
request - Current page request
response - Current page response
Since:
Struts 1.1

internalModuleRelativeInclude

protected void internalModuleRelativeInclude(java.lang.String uri,
                                             javax.servlet.http.HttpServletRequest request,
                                             javax.servlet.http.HttpServletResponse response)
                                      throws java.io.IOException,
                                             javax.servlet.ServletException

Do a module relative include to specified URI using request dispatcher. URI is relative to the current module. The real URI is compute by prefixing the module name.

This method is used internally and is not part of the public API. It is advised to not use it in subclasses.

Parameters:
uri - Module-relative URI to include
request - Current page request
response - Current page response
Since:
Struts 1.1

doForward

protected void doForward(java.lang.String uri,
                         javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response)
                  throws java.io.IOException,
                         javax.servlet.ServletException

Do a forward to specified URI using a RequestDispatcher. This method is used by all internal method needing to do a forward.

Parameters:
uri - Context-relative URI to forward to
request - Current page request
response - Current page response
Since:
Struts 1.1

doInclude

protected void doInclude(java.lang.String uri,
                         javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response)
                  throws java.io.IOException,
                         javax.servlet.ServletException

Do an include of specified URI using a RequestDispatcher. This method is used by all internal method needing to do an include.

Parameters:
uri - Context-relative URI to include
request - Current page request
response - Current page response
Since:
Struts 1.1

getInternal

protected MessageResources getInternal()

Return the MessageResources instance containing our internal message strings.


getServletContext

protected javax.servlet.ServletContext getServletContext()

Return the ServletContext for the web application in which we are running.


log

protected void log(java.lang.String message)
Deprecated. Use commons-logging instead. This will be removed in a release after Struts 1.2.

Log the specified message to the servlet context log for this web application.

Parameters:
message - The message to be logged

log

protected void log(java.lang.String message,
                   java.lang.Throwable exception)
Deprecated. Use commons-logging instead. This will be removed in a release after Struts 1.2.

Log the specified message and exception to the servlet context log for this web application.

Parameters:
message - The message to be logged
exception - The exception to be logged


Copyright 2000-2006 - The Apache Software Foundation