<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-17  評論-64  文章-79  trackbacks-1

    在web.xml中,配置"Set Character Encoding" filter,可以實現客戶端傳入服務器端的Request對象中的數據的正確解碼。

    我使用的filter是Craig McClanahan寫的,這位仁兄大名鼎鼎,他是Struts框架的主要體系設計師和開發者,Tomcat4的主設計師和Java Web Services Developer Pack實現包的主設計師,領導著Sun的JavaServer Faces規范開發,同時也是Java EE平臺的Web Layer Archiecture。filter的代碼附在文后。

    web.xml中的配置如下:

    <!-- GBK Encodinbg Filter definition -->
    <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GBK</param-value>
    </init-param>
    </filter>

    <!-- GBK Encoding Filter mapping -->
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>


    /*
    * Copyright 2004 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    *
    * http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES or CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */

    package filters;


    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;


    /**
    * <p>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:</p>
    * <ul>
    * <li><strong>encoding</strong> - The character encoding to be configured
    * for this request, either conditionally or unconditionally based on
    * the <code>ignore</code> initialization parameter. This parameter
    * is required, so there is no default.</li>
    * <li><strong>ignore</strong> - If set to "true", any character encoding
    * specified by the client is ignored, and the value returned by the
    * <code>selectEncoding()</code> method is set. If set to "false,
    * <code>selectEncoding()</code> is called <strong>only</strong> if the
    * client has not already specified an encoding. By default, this
    * parameter is set to "true".</li>
    * </ul>
    *
    * <p>Although this filter can be used unchanged, it is also easy to
    * subclass it and make the <code>selectEncoding()</code> method more
    * intelligent about what encoding to choose, based on characteristics of
    * the incoming request (such as the values of the <code>Accept-Language</code>
    * and <code>User-Agent</code> headers, or a value stashed in the current
    * user's session.</p>
    *
    * @author Craig McClanahan
    * @version $Revision: 1.2 $ $Date: 2004/03/18 16:40:33 $
    */

    public class SetCharacterEncodingFilter 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);

    }


    }
    posted on 2007-03-26 17:47 飛鳥 閱讀(564) 評論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 最新69国产成人精品免费视频动漫| 一二三区免费视频| 成人免费毛片内射美女APP| 亚洲一区二区三区偷拍女厕| 亚洲gv白嫩小受在线观看| 九九免费精品视频在这里| 四虎在线播放免费永久视频 | 在线观看亚洲天天一三视| 免费精品视频在线| 免费在线观看毛片| 免费无遮挡无遮羞在线看| 国产成人在线免费观看| 亚洲精品无码你懂的| 一个人免费观看视频www| 亚洲精品高清无码视频| a高清免费毛片久久| 免费在线观看中文字幕| 亚洲a无码综合a国产av中文| 免费特级黄毛片在线成人观看| 亚洲成人午夜电影| 亚洲国产模特在线播放| 老汉精品免费AV在线播放| 亚洲AV无码乱码国产麻豆| 色播在线永久免费视频网站| 国产免费啪嗒啪嗒视频看看| 亚洲AV无码成人精品区日韩 | fc2成年免费共享视频18| 国产精品久免费的黄网站 | 国产大片91精品免费观看男同| 亚洲一卡一卡二新区无人区| 亚洲天堂免费在线| 中国在线观看免费国语版| 亚洲一级视频在线观看| 一二三四在线播放免费观看中文版视频| 亚洲人成电影网站| 成人网站免费观看| 亚洲综合激情五月丁香六月| 免费很黄很色裸乳在线观看| caoporn国产精品免费| 五月天网站亚洲小说| 亚洲高清不卡视频|