Class SetCharacterEncodingFilter

  • All Implemented Interfaces:
    javax.servlet.Filter

    public class SetCharacterEncodingFilter
    extends java.lang.Object
    implements javax.servlet.Filter

    Example filter that sets the character encoding to be used in parsing the incoming request, either unconditionally or only if the client did not specify a character encoding. Configuration of this filter is based on the following initialization parameters:

    • encoding - The character encoding to be configured for this request, either conditionally or unconditionally based on the ignore initialization parameter. This parameter is required, so there is no default.
    • ignore - If set to "true", any character encoding specified by the client is ignored, and the value returned by the selectEncoding() method is set. If set to "false, selectEncoding() is called only if the client has not already specified an encoding. By default, this parameter is set to "true".

    Although this filter can be used unchanged, it is also easy to subclass it and make the selectEncoding() method more intelligent about what encoding to choose, based on characteristics of the incoming request (such as the values of the Accept-Language and User-Agent headers, or a value stashed in the current user's session.

    Author:
    Craig McClanahan
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String encoding
      The default character encoding to set for requests that pass through this filter.
      protected javax.servlet.FilterConfig filterConfig
      The filter configuration object we are associated with.
      protected boolean ignore
      Should a character encoding specified by the client be ignored?
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroy()
      Take this filter out of service.
      void doFilter​(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)
      Select and set (if specified) the character encoding to be used to interpret request parameters for this request.
      void init​(javax.servlet.FilterConfig filterConfig)
      Place this filter into service.
      protected java.lang.String selectEncoding​(javax.servlet.ServletRequest request)
      Select an appropriate character encoding to be used, based on the characteristics of the current request and/or filter initialization parameters.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • encoding

        protected java.lang.String encoding
        The default character encoding to set for requests that pass through this filter.
      • filterConfig

        protected javax.servlet.FilterConfig filterConfig
        The filter configuration object we are associated with. If this value is null, this filter instance is not currently configured.
      • ignore

        protected boolean ignore
        Should a character encoding specified by the client be ignored?
    • Constructor Detail

      • SetCharacterEncodingFilter

        public SetCharacterEncodingFilter()
    • Method Detail

      • destroy

        public void destroy()
        Take this filter out of service.
        Specified by:
        destroy in interface javax.servlet.Filter
      • doFilter

        public void doFilter​(javax.servlet.ServletRequest request,
                             javax.servlet.ServletResponse response,
                             javax.servlet.FilterChain chain)
                      throws java.io.IOException,
                             javax.servlet.ServletException
        Select and set (if specified) the character encoding to be used to interpret request parameters for this request.
        Specified by:
        doFilter in interface javax.servlet.Filter
        Parameters:
        request - The servlet request we are processing
        response - The servlet response we are creating
        chain - The filter chain we are processing
        Throws:
        java.io.IOException - if an input/output error occurs
        javax.servlet.ServletException - if a servlet error occurs
      • init

        public void init​(javax.servlet.FilterConfig filterConfig)
                  throws javax.servlet.ServletException
        Place this filter into service.
        Specified by:
        init in interface javax.servlet.Filter
        Parameters:
        filterConfig - The filter configuration object
        Throws:
        javax.servlet.ServletException - if something goes wrong.
      • selectEncoding

        protected java.lang.String selectEncoding​(javax.servlet.ServletRequest request)
        Select an appropriate character encoding to be used, based on the characteristics of the current request and/or filter initialization parameters. If no character encoding should be set, return null.

        The default implementation unconditionally returns the value configured by the encoding initialization parameter for this filter.

        Parameters:
        request - The servlet request we are processing
        Returns:
        the selected encoding.