一滴水

          java 2006年1月新開始:)
          隨筆 - 10, 文章 - 2, 評論 - 6, 引用 - 0
          數據加載中……

          Struts 中文亂碼問題 Filter解決

          這個也不知道來自網上那里,自己用過了,最近整理資料記錄下來

          原理很簡單就是使用Filter處理設置的請求的 CharacterEncoding

          具體實現Filter

          package yidishui.util;
          import javax.servlet.Filter;
          import javax.servlet.FilterChain;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import java.io.IOException;
          public class EncodingFilter implements Filter {
          /**
          * 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 response The servlet response we are creating
          * @param chain The filter chain we are processing
          * @throws IOException if an input/output error occurs
          * @throws 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
          * @return return encoding
          */
          protected String selectEncoding(ServletRequest request) {
          return (this.encoding);
          }
          }// EOC
           

          2.具體web.xml配置

          <filter>
          <filter-name>EncodingFilter</filter-name>
          <filter-class>yidishui.util.EncodingFilter</filter-class>
          <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
          </init-param>
          <init-param>
          <param-name>ignore</param-name>
          <param-value>yes</param-value>
          </init-param>
          </filter>
          <filter-mapping>
          <filter-name>EncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
          </filter-mapping>

          posted on 2006-09-08 18:41 一滴水 閱讀(1081) 評論(1)  編輯  收藏

          評論

          # re: Struts 中文亂碼問題 Filter解決[未登錄]  回復  更多評論   

          呵呵
          2015-03-02 09:16 | 測試

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 赣榆县| 丰原市| 东方市| 江山市| 清流县| 阳原县| 新邵县| 宁夏| 慈利县| 道真| 景宁| 永年县| 公主岭市| 本溪市| 海淀区| 高邑县| 牡丹江市| 镇赉县| 屏东县| 墨竹工卡县| 新宾| 四会市| 来安县| 河曲县| 格尔木市| 峡江县| 山东| 西华县| 墨江| 商水县| 阿克陶县| 宝应县| 水城县| 科技| 云梦县| 泌阳县| 会东县| 红原县| 阿图什市| 隆子县| 贵南县|