setcharacterencodingfilter.java

来自「基于ArcIMS Java Connector开发的WebGIS」· Java 代码 · 共 84 行

JAVA
84
字号
package com.esri.aims.mtier.dx.filters;

import java.io.*;
import javax.servlet.*;

/**
 * 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.
 * 如果原来没有设置request的编码,就设置;否则保持不变
 */

public class SetCharacterEncodingFilter
    implements Filter {

  protected String encoding = null;
  protected FilterConfig filterConfig = null;
  protected boolean ignore = true;

  /**
   * 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.
   */

  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); //设置request编码的地方
      }
    }
    // 传递控制到下一个过滤器
    chain.doFilter(request, response);
  }

  /**
   * Place this filter into service.
   * 从web-app的web.xml文件中读取初始参数的值
   */

  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;
    }
  }

  /**
   * 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>.

   * 选择request原来的编码
   */

  protected String selectEncoding(ServletRequest request) {
    return (this.encoding);
  }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?