服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

encoding filter实现

public class characterencodingfilter implements filter {


    // ----------------------------------------------------- instance variables


    /**
     * the default character encoding to set for requests that pass through
     * this filter.
     */
    protected string encoding = null;


    /**
     * the filter configuration object we are associated with.  if this value
     * is null, this filter instance is not currently configured.
     */
    protected filterconfig filterconfig = null;


    /**
     * should a character encoding specified by the client be ignored?
     */
    protected boolean ignore = true;


    // --------------------------------------------------------- public methods


    /**
     * take this filter out of service.
     */
    public void destroy() {

        this.encoding = null;
        this.filterconfig = null;

    }


    /**
     * select and set (if specified) the character encoding to be used to
     * interpret request parameters for this request.
     *
     * @param request the servlet request we are processing
     * @param result the servlet response we are creating
     * @param chain the filter chain we are processing
     *
     * @exception ioexception if an input/output error occurs
     * @exception servletexception if a servlet error occurs
     */
    public void dofilter(servletrequest request, servletresponse response,
                         filterchain chain) throws ioexception,
            servletexception {

        // conditionally select and set the character encoding to be used
        if (ignore || (request.getcharacterencoding() == null)) {
            string encoding = selectencoding(request);
            if (encoding != null) {
                request.setcharacterencoding(encoding);
            }
        }

        // pass control on to the next filter
        chain.dofilter(request, response);

    }


    /**
     * place this filter into service.
     *
     * @param filterconfig the filter configuration object
     */
    public void init(filterconfig filterconfig) throws servletexception {

        this.filterconfig = filterconfig;
        this.encoding = filterconfig.getinitparameter("encoding");
        string value = filterconfig.getinitparameter("ignore");
        if (value == null) {
            this.ignore = true;
        } else if (value.equalsignorecase("true")) {
            this.ignore = true;
        } else if (value.equalsignorecase("yes")) {
            this.ignore = true;
        } else {
            this.ignore = false;
        }

    }


    // ------------------------------------------------------ protected methods


    /**
     * 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
     * <code>null</code>.
     * <p>
     * the default implementation unconditionally returns the value configured
     * by the <strong>encoding</strong> initialization parameter for this
     * filter.
     *
     * @param request the servlet request we are processing
     */
    protected string selectencoding(servletrequest request) {

        return (this.encoding);

    }

}

web.xml

web.xml

<filter>
    <filter-name>set character encoding</filter-name>
    <filter-class>com.realcampaign.manager.filters.characterencodingfilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>set character encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

扫描关注微信公众号