org.springframework.web.filter

## Class CharacterEncodingFilter

- java.lang.Object
- - org.springframework.web.filter.GenericFilterBean
  - - org.springframework.web.filter.OncePerRequestFilter
    - - org.springframework.web.filter.CharacterEncodingFilter

- All Implemented Interfaces:
    Filter, Aware, BeanNameAware, DisposableBean, InitializingBean, EnvironmentAware, ServletContextAware

      public class CharacterEncodingFilter
      extends OncePerRequestFilter

  Servlet 2.3/2.4 Filter that allows one to specify a character encoding for requests. This is useful because current browsers typically do not set a character encoding even if specified in the HTML page or form.

  This filter can either apply its encoding if the request does not already specify an encoding, or enforce this filter's encoding in any case ("forceEncoding"="true"). In the latter case, the encoding will also be applied as default response encoding on Servlet 2.4+ containers (although this will usually be overridden by a full content type set in the view).

  Since:
    15.03.2004
  Author:
    Juergen Hoeller
  See Also:
    `setEncoding(java.lang.String)`, `setForceEncoding(boolean)`, `ServletRequest.setCharacterEncoding(java.lang.String)`, `ServletResponse.setCharacterEncoding(java.lang.String)`

- - ### Field Summary

    - ### Fields inherited from class org.springframework.web.filter.OncePerRequestFilter

      `ALREADY_FILTERED_SUFFIX`

    - ### Fields inherited from class org.springframework.web.filter.GenericFilterBean

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CharacterEncodingFilter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)` Same contract as for `doFilter`, but guaranteed to be just invoked once per request within a single request thread.
    `void` | `setEncoding(String encoding)` Set the encoding to use for requests.
    `void` | `setForceEncoding(boolean forceEncoding)` Set whether the configured `encoding` of this filter is supposed to override existing request and response encodings.

    - ### Methods inherited from class org.springframework.web.filter.OncePerRequestFilter

      `doFilter, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterAsyncDispatch, shouldNotFilterErrorDispatch`

    - ### Methods inherited from class org.springframework.web.filter.GenericFilterBean

      `addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext`

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

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

- - ### Constructor Detail

    - #### CharacterEncodingFilter

          public CharacterEncodingFilter()

  - ### Method Detail

    - #### setEncoding

          public void setEncoding(String encoding)

      Set the encoding to use for requests. This encoding will be passed into a `ServletRequest.setCharacterEncoding(java.lang.String)` call.

      Whether this encoding will override existing request encodings (and whether it will be applied as default response encoding as well) depends on the `"forceEncoding"` flag.

    - #### setForceEncoding

          public void setForceEncoding(boolean forceEncoding)

      Set whether the configured `encoding` of this filter is supposed to override existing request and response encodings.

      Default is "false", i.e. do not modify the encoding if `ServletRequest.getCharacterEncoding()` returns a non-null value. Switch this to "true" to enforce the specified encoding in any case, applying it as default response encoding as well.

      Note that the response encoding will only be set on Servlet 2.4+ containers, since Servlet 2.3 did not provide a facility for setting a default response encoding.

    - #### doFilterInternal

          protected void doFilterInternal(HttpServletRequest request,
                              HttpServletResponse response,
                              FilterChain filterChain)
                                   throws ServletException,
                                          IOException

      Description copied from class: `OncePerRequestFilter`
      Same contract as for `doFilter`, but guaranteed to be just invoked once per request within a single request thread. See `OncePerRequestFilter.shouldNotFilterAsyncDispatch()` for details.

      Provides HttpServletRequest and HttpServletResponse arguments instead of the default ServletRequest and ServletResponse ones.

      Specified by:
        `doFilterInternal` in class `OncePerRequestFilter`
      Throws:
        `ServletException`
        `IOException`