Package: org.grails.web.util

## [Java] Class WebUtils

- org.grails.web.util.WebUtils

- Utility methods to access commons objects and perform common web related functions for the internal framework.

  Authors:
    Graeme Rocher
  Since:
    1.0

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static java.lang.String` | `ASYNC_REQUEST_URI_ATTRIBUTE` |
    `static java.lang.String` | `DISPATCH_ACTION_PARAMETER` |
    `static java.lang.String` | `ENABLE_FILE_EXTENSIONS` |
    `static java.lang.String` | `EXCEPTION_ATTRIBUTE` |
    `static java.lang.String` | `GRAILS_DISPATCH_EXTENSION` |
    `static java.lang.String` | `GRAILS_SERVLET_PATH` |
    `static java.lang.String` | `LAYOUT_ATTRIBUTE` |
    `static java.lang.String` | `RENDERING_VIEW` |
    `static java.lang.String` | `SEND_ALLOW_HEADER_FOR_INVALID_HTTP_METHOD` |
    `static char` | `SLASH` |

  - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class org.springframework.web.util.WebUtils` | `INCLUDE_REQUEST_URI_ATTRIBUTE, INCLUDE_CONTEXT_PATH_ATTRIBUTE, INCLUDE_SERVLET_PATH_ATTRIBUTE, INCLUDE_PATH_INFO_ATTRIBUTE, INCLUDE_QUERY_STRING_ATTRIBUTE, FORWARD_REQUEST_URI_ATTRIBUTE, FORWARD_CONTEXT_PATH_ATTRIBUTE, FORWARD_SERVLET_PATH_ATTRIBUTE, FORWARD_PATH_INFO_ATTRIBUTE, FORWARD_QUERY_STRING_ATTRIBUTE, ERROR_STATUS_CODE_ATTRIBUTE, ERROR_EXCEPTION_TYPE_ATTRIBUTE, ERROR_MESSAGE_ATTRIBUTE, ERROR_EXCEPTION_ATTRIBUTE, ERROR_REQUEST_URI_ATTRIBUTE, ERROR_SERVLET_NAME_ATTRIBUTE, CONTENT_TYPE_CHARSET_PREFIX, DEFAULT_CHARACTER_ENCODING, TEMP_DIR_CONTEXT_ATTRIBUTE, HTML_ESCAPE_CONTEXT_PARAM, RESPONSE_ENCODED_HTML_ESCAPE_CONTEXT_PARAM, WEB_APP_ROOT_KEY_PARAM, DEFAULT_WEB_APP_ROOT_KEY, SUBMIT_IMAGE_SUFFIXES, SESSION_MUTEX_ATTRIBUTE`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `static java.lang.String` | `addViewPrefix(java.lang.String viewName)` @deprecated Does not take into account the url converter
    `` | `static java.lang.String` | `addViewPrefix(java.lang.String viewName, java.lang.String controllerName)`
    `` | `static boolean` | `areFileExtensionsEnabled()` Returns the value of the "grails.mime.file.extensions" setting configured in application.groovy
    `` | `static void` | `cleanupIncludeRequestAttributes(javax.servlet.http.HttpServletRequest request, java.util.Map<java.lang.String, java.lang.Object> toRestore)`
    `` | `static void` | `clearGrailsWebRequest()` Removes any GrailsWebRequest instance from the current request.
    `` | `static void` | `exposeIncludeRequestAttributes(javax.servlet.http.HttpServletRequest request)` Expose the current request URI and paths as javax.servlet.http.HttpServletRequest attributes under the keys defined in the Servlet 2.4 specification, for containers that implement 2.3 or an earlier version of the Servlet API: `javax.servlet.forward.request_uri`, `javax.servlet.forward.context_path`, `javax.servlet.forward.servlet_path`, `javax.servlet.forward.path_info`, `javax.servlet.forward.query_string`.
    `` | `static java.util.Map<java.lang.String, java.lang.Object>` | `exposeRequestAttributesAndReturnOldValues(javax.servlet.http.HttpServletRequest request, java.util.Map<java.lang.String, ?> attributes)`
    `` | `static GrailsApplication` | `findApplication(javax.servlet.ServletContext servletContext)` Looks up the GrailsApplication instance
    `` | `static org.springframework.context.ApplicationContext` | `findApplicationContext(javax.servlet.ServletContext servletContext)` Locates the ApplicationContext, returns null if not found
    `` | `static java.util.Map<java.lang.String, java.lang.Object>` | `fromQueryString(java.lang.String queryString)` Takes a query string and returns the results as a map where the values are either a single entry or a list of values
    `` | `static java.lang.String` | `getFormatFromURI(java.lang.String uri)` Obtains the format from the URI.
    `` | `static java.lang.String` | `getFormatFromURI(java.lang.String uri, MimeType[] mimeTypes)` Obtains the format from the URI.
    `` | `static java.lang.String` | `getForwardURI(javax.servlet.http.HttpServletRequest request)` Obtains the forwardURI from the request, since Grails uses a forwarding technique for URL mappings.
    `` | `static java.lang.String` | `getRequestURIForGrailsDispatchURI(javax.servlet.http.HttpServletRequest request)` The Grails dispatch servlet maps URIs like /app/grails/example/index.dispatch.
    `` | `static boolean` | `isAsync(javax.servlet.http.HttpServletRequest request)` Check whether the given request is a forward request
    `` | `static boolean` | `isError(javax.servlet.http.HttpServletRequest request)` Check whether the given request is a forward request
    `` | `static boolean` | `isForward(javax.servlet.http.HttpServletRequest request)` Check whether the given request is a forward request
    `` | `static boolean` | `isForwardOrInclude(javax.servlet.http.HttpServletRequest request)` Check whether the given request is an include or forward request
    `` | `static boolean` | `isInclude(javax.servlet.http.HttpServletRequest request)` Check whether the given request is an include request
    `` | `static GrailsApplication` | `lookupApplication(javax.servlet.ServletContext servletContext)` Looks up the GrailsApplication instance
    `` | `static org.springframework.web.servlet.HandlerInterceptor[]` | `lookupHandlerInterceptors(javax.servlet.ServletContext servletContext)` Looks up all of the HandlerInterceptor instances registered for the application
    `` | `static org.springframework.web.servlet.ViewResolver` | `lookupViewResolver(javax.servlet.ServletContext servletContext)`
    `` | `static org.springframework.web.servlet.ViewResolver` | `lookupViewResolver(org.springframework.context.ApplicationContext wac)`
    `` | `static org.springframework.web.context.request.WebRequestInterceptor[]` | `lookupWebRequestInterceptors(javax.servlet.ServletContext servletContext)` Looks up all of the WebRequestInterceptor instances registered with the application
    `` | `static org.springframework.web.servlet.View` | `resolveView(javax.servlet.http.HttpServletRequest request, java.lang.String viewName, java.lang.String controllerName, org.springframework.web.servlet.ViewResolver viewResolver)` Resolves a view for the given view name and controller name
    `` | `static GrailsWebRequest` | `retrieveGrailsWebRequest()` Returns the GrailsWebRequest associated with the current request.
    `` | `static void` | `storeGrailsWebRequest(GrailsWebRequest webRequest)` Helper method to store the given GrailsWebRequest for the current request.
    `` | `static java.lang.String` | `toQueryString(java.util.Map params, java.lang.String encoding)` Converts the given params into a query string started with ?
    `` | `static java.lang.String` | `toQueryString(java.util.Map parameters)` Converts the given parameters to a query string using the default UTF-8 encoding

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class org.springframework.web.util.WebUtils` | `org.springframework.web.util.WebUtils#setWebAppRootSystemProperty(javax.servlet.ServletContext), org.springframework.web.util.WebUtils#removeWebAppRootSystemProperty(javax.servlet.ServletContext), org.springframework.web.util.WebUtils#isDefaultHtmlEscape(javax.servlet.ServletContext), org.springframework.web.util.WebUtils#getDefaultHtmlEscape(javax.servlet.ServletContext), org.springframework.web.util.WebUtils#getResponseEncodedHtmlEscape(javax.servlet.ServletContext), org.springframework.web.util.WebUtils#getSessionAttribute(javax.servlet.http.HttpServletRequest, java.lang.String), org.springframework.web.util.WebUtils#getRequiredSessionAttribute(javax.servlet.http.HttpServletRequest, java.lang.String), org.springframework.web.util.WebUtils#setSessionAttribute(javax.servlet.http.HttpServletRequest, java.lang.String, java.lang.Object), org.springframework.web.util.WebUtils#getOrCreateSessionAttribute(javax.servlet.http.HttpSession, java.lang.String, java.lang.Class), org.springframework.web.util.WebUtils#isIncludeRequest(javax.servlet.ServletRequest), org.springframework.web.util.WebUtils#getTargetPage(javax.servlet.ServletRequest, java.lang.String, int), org.springframework.web.util.WebUtils#getCookie(javax.servlet.http.HttpServletRequest, java.lang.String), org.springframework.web.util.WebUtils#getRealPath(javax.servlet.ServletContext, java.lang.String), org.springframework.web.util.WebUtils#getNativeRequest(javax.servlet.ServletRequest, java.lang.Class), org.springframework.web.util.WebUtils#getNativeResponse(javax.servlet.ServletResponse, java.lang.Class), org.springframework.web.util.WebUtils#getSessionId(javax.servlet.http.HttpServletRequest), org.springframework.web.util.WebUtils#getSessionMutex(javax.servlet.http.HttpSession), org.springframework.web.util.WebUtils#getTempDir(javax.servlet.ServletContext), org.springframework.web.util.WebUtils#exposeErrorRequestAttributes(javax.servlet.http.HttpServletRequest, java.lang.Throwable, java.lang.String), org.springframework.web.util.WebUtils#clearErrorRequestAttributes(javax.servlet.http.HttpServletRequest), org.springframework.web.util.WebUtils#exposeRequestAttributes(javax.servlet.ServletRequest, java.util.Map), org.springframework.web.util.WebUtils#hasSubmitParameter(javax.servlet.ServletRequest, java.lang.String), org.springframework.web.util.WebUtils#findParameterValue(java.util.Map, java.lang.String), org.springframework.web.util.WebUtils#findParameterValue(javax.servlet.ServletRequest, java.lang.String), org.springframework.web.util.WebUtils#getParametersStartingWith(javax.servlet.ServletRequest, java.lang.String), org.springframework.web.util.WebUtils#extractFilenameFromUrlPath(java.lang.String), org.springframework.web.util.WebUtils#extractFullFilenameFromUrlPath(java.lang.String), org.springframework.web.util.WebUtils#parseMatrixVariables(java.lang.String), org.springframework.web.util.WebUtils#isValidOrigin(org.springframework.http.HttpRequest, java.util.Collection), org.springframework.web.util.WebUtils#isSameOrigin(org.springframework.http.HttpRequest), org.springframework.web.util.WebUtils#wait(long, int), org.springframework.web.util.WebUtils#wait(long), org.springframework.web.util.WebUtils#wait(), org.springframework.web.util.WebUtils#equals(java.lang.Object), org.springframework.web.util.WebUtils#toString(), org.springframework.web.util.WebUtils#hashCode(), org.springframework.web.util.WebUtils#getClass(), org.springframework.web.util.WebUtils#notify(), org.springframework.web.util.WebUtils#notifyAll()`
    `class java.lang.Object` | `java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()`

- - ### Field Detail

    - #### public static final java.lang.String ASYNC_REQUEST_URI_ATTRIBUTE

    - #### public static final java.lang.String DISPATCH_ACTION_PARAMETER

    - #### public static final java.lang.String ENABLE_FILE_EXTENSIONS

    - #### public static final java.lang.String EXCEPTION_ATTRIBUTE

    - #### public static final java.lang.String GRAILS_DISPATCH_EXTENSION

    - #### public static final java.lang.String GRAILS_SERVLET_PATH

    - #### public static final java.lang.String LAYOUT_ATTRIBUTE

    - #### public static final java.lang.String RENDERING_VIEW

    - #### public static final java.lang.String SEND_ALLOW_HEADER_FOR_INVALID_HTTP_METHOD

    - #### public static final char SLASH

  - ### Method Detail

    - #### public static java.lang.String addViewPrefix(java.lang.String viewName)

      deprecated:
        Does not take into account the url converter

    - #### public static java.lang.String addViewPrefix(java.lang.String viewName, java.lang.String controllerName)

    - #### @java.lang.SuppressWarnings("rawtypes") public static boolean areFileExtensionsEnabled()

      Returns the value of the "grails.mime.file.extensions" setting configured in application.groovy

      Returns:
        true if file extensions are enabled

    - #### public static void cleanupIncludeRequestAttributes(javax.servlet.http.HttpServletRequest request, java.util.Map<java.lang.String, java.lang.Object> toRestore)

    - #### public static void clearGrailsWebRequest()

      Removes any GrailsWebRequest instance from the current request.

    - #### public static void exposeIncludeRequestAttributes(javax.servlet.http.HttpServletRequest request)

      Expose the current request URI and paths as javax.servlet.http.HttpServletRequest attributes under the keys defined in the Servlet 2.4 specification, for containers that implement 2.3 or an earlier version of the Servlet API: `javax.servlet.forward.request_uri`, `javax.servlet.forward.context_path`, `javax.servlet.forward.servlet_path`, `javax.servlet.forward.path_info`, `javax.servlet.forward.query_string`.

      Does not override values if already present, to not cause conflicts with the attributes exposed by Servlet 2.4+ containers themselves.

      Parameters:
        `request` - current servlet request

    - #### public static java.util.Map<java.lang.String, java.lang.Object> exposeRequestAttributesAndReturnOldValues(javax.servlet.http.HttpServletRequest request, java.util.Map<java.lang.String, ?> attributes)

    - #### public static GrailsApplication findApplication(javax.servlet.ServletContext servletContext)

      Looks up the GrailsApplication instance

      Returns:
        The GrailsApplication instance

    - #### public static org.springframework.context.ApplicationContext findApplicationContext(javax.servlet.ServletContext servletContext)

      Locates the ApplicationContext, returns null if not found

      Parameters:
        `servletContext` - The servlet context
      Returns:
        The ApplicationContext

    - #### @java.lang.SuppressWarnings({ "unchecked", "rawtypes" }) public static java.util.Map<java.lang.String, java.lang.Object> fromQueryString(java.lang.String queryString)

      Takes a query string and returns the results as a map where the values are either a single entry or a list of values

      Parameters:
        `queryString` - The query String
      Returns:
        A map

    - #### public static java.lang.String getFormatFromURI(java.lang.String uri)

      Obtains the format from the URI. The format is the string following the . file extension in the last token of the URI. If nothing comes after the ".", this method assumes that there is no format and returns `null`.

      Parameters:
        `uri` - The URI
      Returns:
        The format or null if none

    - #### public static java.lang.String getFormatFromURI(java.lang.String uri, MimeType[] mimeTypes)

      Obtains the format from the URI. The format is the string following the . file extension in the last token of the URI. If nothing comes after the ".", this method assumes that there is no format and returns `null`.

      Parameters:
        `uri` - The URI
        `mimeTypes` - The configured mime types
      Returns:
        The format or null if none

    - #### public static java.lang.String getForwardURI(javax.servlet.http.HttpServletRequest request)

      Obtains the forwardURI from the request, since Grails uses a forwarding technique for URL mappings. The actual request URI is held within a request attribute

      Parameters:
        `request` - The request
      Returns:
        The forward URI

    - #### public static java.lang.String getRequestURIForGrailsDispatchURI(javax.servlet.http.HttpServletRequest request)

      The Grails dispatch servlet maps URIs like /app/grails/example/index.dispatch. This method infers the controller URI for the dispatch URI so that /app/grails/example/index.dispatch becomes /app/example/index

      Parameters:
        `request` - The request

    - #### public static boolean isAsync(javax.servlet.http.HttpServletRequest request)

      Check whether the given request is a forward request

      Parameters:
        `request` - The request
      Returns:
        True if it is a forward request

    - #### public static boolean isError(javax.servlet.http.HttpServletRequest request)

      Check whether the given request is a forward request

      Parameters:
        `request` - The request
      Returns:
        True if it is a forward request

    - #### public static boolean isForward(javax.servlet.http.HttpServletRequest request)

      Check whether the given request is a forward request

      Parameters:
        `request` - The request
      Returns:
        True if it is a forward request

    - #### public static boolean isForwardOrInclude(javax.servlet.http.HttpServletRequest request)

      Check whether the given request is an include or forward request

      Parameters:
        `request` - The request
      Returns:
        True if it is an include or forward request

    - #### public static boolean isInclude(javax.servlet.http.HttpServletRequest request)

      Check whether the given request is an include request

      Parameters:
        `request` - The request
      Returns:
        True if it is an include request

    - #### public static GrailsApplication lookupApplication(javax.servlet.ServletContext servletContext)

      Looks up the GrailsApplication instance

      Returns:
        The GrailsApplication instance

    - #### public static org.springframework.web.servlet.HandlerInterceptor[] lookupHandlerInterceptors(javax.servlet.ServletContext servletContext)

      Looks up all of the HandlerInterceptor instances registered for the application

      Parameters:
        `servletContext` - The ServletContext instance
      Returns:
        An array of HandlerInterceptor instances

    - #### public static org.springframework.web.servlet.ViewResolver lookupViewResolver(javax.servlet.ServletContext servletContext)

    - #### public static org.springframework.web.servlet.ViewResolver lookupViewResolver(org.springframework.context.ApplicationContext wac)

    - #### public static org.springframework.web.context.request.WebRequestInterceptor[] lookupWebRequestInterceptors(javax.servlet.ServletContext servletContext)

      Looks up all of the WebRequestInterceptor instances registered with the application

      Parameters:
        `servletContext` - The ServletContext instance
      Returns:
        An array of WebRequestInterceptor instances

    - #### public static org.springframework.web.servlet.View resolveView(javax.servlet.http.HttpServletRequest request, java.lang.String viewName, java.lang.String controllerName, org.springframework.web.servlet.ViewResolver viewResolver)

      Resolves a view for the given view name and controller name

      throws:
        Exception Thrown if an error occurs
      Parameters:
        `request` - The request
        `viewName` - The view name
        `controllerName` - The controller name
        `viewResolver` - The resolver
      Returns:
        A View or null

    - #### public static GrailsWebRequest retrieveGrailsWebRequest()

      Returns the GrailsWebRequest associated with the current request. This is the preferred means of accessing the GrailsWebRequest instance. If the exception is undesired, you can use RequestContextHolder.getRequestAttributes() instead.

      throws:
        IllegalStateException if this is called outside of a request.

    - #### public static void storeGrailsWebRequest(GrailsWebRequest webRequest)

      Helper method to store the given GrailsWebRequest for the current request. Ensures consistency between RequestContextHolder and the relevant request attribute. This is the preferred means of updating the current web request.

    - #### @java.lang.SuppressWarnings("rawtypes") public static java.lang.String toQueryString(java.util.Map params, java.lang.String encoding)

      Converts the given params into a query string started with ?

      throws:
        UnsupportedEncodingException If the given encoding is not supported
      Parameters:
        `params` - The params
        `encoding` - The encoding to use
      Returns:
        The query string

    - #### @java.lang.SuppressWarnings("rawtypes") public static java.lang.String toQueryString(java.util.Map parameters)

      Converts the given parameters to a query string using the default UTF-8 encoding

      throws:
        UnsupportedEncodingException If UTF-8 encoding is not supported
      Parameters:
        `parameters` - The parameters
      Returns:
        The query string