<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,可以實現(xiàn)客戶端傳入服務器端的Request對象中的數據的正確解碼。

    我使用的filter是Craig McClanahan寫的,這位仁兄大名鼎鼎,他是Struts框架的主要體系設計師和開發(fā)者,Tomcat4的主設計師和Java Web Services Developer Pack實現(xiàn)包的主設計師,領導著Sun的JavaServer Faces規(guī)范開發(fā),同時也是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 飛鳥 閱讀(556) 評論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 黄网址在线永久免费观看| 一级女人18毛片免费| 国产高清在线免费视频| 亚洲三级在线免费观看| 国产男女爽爽爽爽爽免费视频| 亚洲AV午夜成人片| 好紧我太爽了视频免费国产| 亚洲乱码一区二区三区在线观看| 中文字幕不卡免费高清视频| 久久久久久a亚洲欧洲aⅴ| 未满十八18禁止免费无码网站| 亚洲国产高清在线| 成人免费视频69| 亚洲AV无码之国产精品| 亚洲?v女人的天堂在线观看| 一个人免费观看视频在线中文| 亚洲区小说区图片区QVOD| 67pao强力打造高清免费| 亚洲一卡二卡三卡四卡无卡麻豆| 免费可以在线看A∨网站| 国产精品亚洲а∨无码播放麻豆| 亚洲精品国产高清不卡在线| 国产免费拔擦拔擦8X高清在线人 | 亚洲中文字幕无码爆乳AV| 99精品免费视品| 亚洲精品日韩中文字幕久久久| 成人免费无码视频在线网站| 黄色网址免费在线| 久久国产精品亚洲一区二区| 国产成人精品免费视频大| 处破女第一次亚洲18分钟| 国产亚洲A∨片在线观看| 亚洲一级毛片免费看| 国产成人 亚洲欧洲| 亚洲精品一品区二品区三品区| 91久久精品国产免费直播| 精品久久久久久亚洲综合网| 亚洲级αV无码毛片久久精品| 日本一区二区三区免费高清| 成年免费大片黄在线观看com| 亚洲视频免费在线看|