org.apache.struts2.dispatcher

## Class PrepareOperations

- java.lang.Object
- - org.apache.struts2.dispatcher.PrepareOperations

-     public class PrepareOperations
      extends Object

  Contains preparation operations for a request before execution

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PrepareOperations(Dispatcher dispatcher)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `assignDispatcherToThread()` Assigns the dispatcher to the dispatcher thread local
    `void` | `cleanupDispatcher()` Cleans up the dispatcher instance
    `void` | `cleanupRequest(javax.servlet.http.HttpServletRequest request)` Cleans up request.
    `void` | `cleanupWrappedRequest(javax.servlet.http.HttpServletRequest request)` Should be called after whenever `wrapRequest(javax.servlet.http.HttpServletRequest)` is called.
    `static void` | `clearDevModeOverride()` Clear any override of the static devMode value being applied to the current thread.
    `ActionContext` | `createActionContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Creates the action context and initializes the thread local
    `static void` | `decrementRecursionCounter(javax.servlet.http.HttpServletRequest request, String attributeName, Runnable runnable)` Helper method to count execution completions with a request attribute, and optionally execute some code (e.g.
    `ActionMapping` | `findActionMapping(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Finds and optionally creates an `ActionMapping`.
    `ActionMapping` | `findActionMapping(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, boolean forceLookup)` Finds and optionally creates an `ActionMapping`.
    `static Boolean` | `getDevModeOverride()`
    `static void` | `incrementRecursionCounter(javax.servlet.http.HttpServletRequest request, String attributeName)` Helper method to potentially count recursive executions with a request attribute.
    `boolean` | `isUrlExcluded(javax.servlet.http.HttpServletRequest request)` Check whether the request matches a list of exclude patterns.
    `boolean` | `isUrlExcluded(javax.servlet.http.HttpServletRequest request, List<Pattern> excludedPatterns)` Deprecated. since 6.4.0, use `isUrlExcluded(HttpServletRequest)` instead.
    `static void` | `overrideDevMode(boolean devMode)` Set an override of the static devMode value.
    `void` | `setEncodingAndLocale(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Sets the request encoding and locale on the response
    `void` | `trackRecursion(javax.servlet.http.HttpServletRequest request)` Should be called by `StrutsPrepareFilter` to track how many times this request has been filtered.
    `javax.servlet.http.HttpServletRequest` | `wrapRequest(javax.servlet.http.HttpServletRequest request)` Wraps the request with the Struts wrapper that handles multipart requests better Also tracks additional calls to this method on the same request.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PrepareOperations

          public PrepareOperations(Dispatcher dispatcher)

  - ### Method Detail

    - #### trackRecursion

          public void trackRecursion(javax.servlet.http.HttpServletRequest request)

      Should be called by `StrutsPrepareFilter` to track how many times this request has been filtered.

    - #### cleanupRequest

          public void cleanupRequest(javax.servlet.http.HttpServletRequest request)

      Cleans up request. When paired with `trackRecursion(javax.servlet.http.HttpServletRequest)`, only cleans up once the first filter instance has completed, preventing cleanup by recursive filter calls - i.e. before the request is completely processed.

    - #### createActionContext

          public ActionContext createActionContext(javax.servlet.http.HttpServletRequest request,
                                                   javax.servlet.http.HttpServletResponse response)

      Creates the action context and initializes the thread local
      Parameters:
        `request` - servlet request
        `response` - servlet response
      Returns:
        the action context

    - #### assignDispatcherToThread

          public void assignDispatcherToThread()

      Assigns the dispatcher to the dispatcher thread local

    - #### setEncodingAndLocale

          public void setEncodingAndLocale(javax.servlet.http.HttpServletRequest request,
                                           javax.servlet.http.HttpServletResponse response)

      Sets the request encoding and locale on the response
      Parameters:
        `request` - servlet request
        `response` - servlet response

    - #### wrapRequest

          public javax.servlet.http.HttpServletRequest wrapRequest(javax.servlet.http.HttpServletRequest request)
                                                            throws javax.servlet.ServletException

      Wraps the request with the Struts wrapper that handles multipart requests better Also tracks additional calls to this method on the same request.
      Parameters:
        `request` - servlet request
      Returns:
        The new request, if there is one
      Throws:
        `javax.servlet.ServletException` - on any servlet related error

    - #### cleanupWrappedRequest

          public void cleanupWrappedRequest(javax.servlet.http.HttpServletRequest request)

      Should be called after whenever `wrapRequest(javax.servlet.http.HttpServletRequest)` is called. Ensures the request is only cleaned up at the instance it was initially wrapped in the case of multiple wrap calls - i.e. filter recursion.

    - #### findActionMapping

          public ActionMapping findActionMapping(javax.servlet.http.HttpServletRequest request,
                                                 javax.servlet.http.HttpServletResponse response)

      Finds and optionally creates an `ActionMapping`. It first looks in the current request to see if one has already been found, otherwise, it creates it and stores it in the request. No mapping will be created in the case of static resource requests or unidentifiable requests for other servlets, for example.
      Parameters:
        `request` - servlet request
        `response` - servlet response
      Returns:
        the action mapping

    - #### findActionMapping

          public ActionMapping findActionMapping(javax.servlet.http.HttpServletRequest request,
                                                 javax.servlet.http.HttpServletResponse response,
                                                 boolean forceLookup)

      Finds and optionally creates an `ActionMapping`. if forceLookup is false, it first looks in the current request to see if one has already been found, otherwise, it creates it and stores it in the request. No mapping will be created in the case of static resource requests or unidentifiable requests for other servlets, for example.
      Parameters:
        `forceLookup` - if true, the action mapping will be looked up from the ActionMapper instance, ignoring if there is one in the request or not
        `request` - servlet request
        `response` - servlet response
      Returns:
        the action mapping

    - #### cleanupDispatcher

          public void cleanupDispatcher()

      Cleans up the dispatcher instance

    - #### isUrlExcluded

          public boolean isUrlExcluded(javax.servlet.http.HttpServletRequest request)

      Check whether the request matches a list of exclude patterns.
      Parameters:
        `request` - The request to check patterns against
      Returns:
        `true` if the request URI matches one of the given patterns

    - #### isUrlExcluded

          @Deprecated
          public boolean isUrlExcluded(javax.servlet.http.HttpServletRequest request,
                                                   List<Pattern> excludedPatterns)

      Deprecated. since 6.4.0, use `isUrlExcluded(HttpServletRequest)` instead.

    - #### overrideDevMode

          public static void overrideDevMode(boolean devMode)

      Set an override of the static devMode value. Do not set this via a request parameter or any other unprotected method. Using a signed cookie is one safe way to turn it on per request.
      Parameters:
        `devMode` - the override value

    - #### getDevModeOverride

          public static Boolean getDevModeOverride()

      Returns:
        Boolean override value, or null if no override

    - #### clearDevModeOverride

          public static void clearDevModeOverride()

      Clear any override of the static devMode value being applied to the current thread. This can be useful for any situation where `overrideDevMode(boolean)` might be called in a flow where `cleanupRequest(javax.servlet.http.HttpServletRequest)` does not get called. May be very situational (such as some unit tests), but may have other utility as well.

    - #### incrementRecursionCounter

          public static void incrementRecursionCounter(javax.servlet.http.HttpServletRequest request,
                                                       String attributeName)

      Helper method to potentially count recursive executions with a request attribute. Should be used in conjunction with `decrementRecursionCounter(javax.servlet.http.HttpServletRequest, java.lang.String, java.lang.Runnable)`.

    - #### decrementRecursionCounter

          public static void decrementRecursionCounter(javax.servlet.http.HttpServletRequest request,
                                                       String attributeName,
                                                       Runnable runnable)

      Helper method to count execution completions with a request attribute, and optionally execute some code (e.g. cleanup) once all recursive executions have completed. Should be used in conjunction with `incrementRecursionCounter(javax.servlet.http.HttpServletRequest, java.lang.String)`.

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.