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

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

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

    隨筆-17  評(píng)論-64  文章-79  trackbacks-1

    在web.xml中,配置"Set Character Encoding" filter,可以實(shí)現(xiàn)客戶端傳入服務(wù)器端的Request對(duì)象中的數(shù)據(jù)的正確解碼。

    我使用的filter是Craig McClanahan寫的,這位仁兄大名鼎鼎,他是Struts框架的主要體系設(shè)計(jì)師和開(kāi)發(fā)者,Tomcat4的主設(shè)計(jì)師和Java Web Services Developer Pack實(shí)現(xiàn)包的主設(shè)計(jì)師,領(lǐng)導(dǎo)著Sun的JavaServer Faces規(guī)范開(kāi)發(fā),同時(shí)也是Java EE平臺(tái)的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 飛鳥(niǎo) 閱讀(556) 評(píng)論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 国产午夜免费高清久久影院 | 久久精品国产亚洲av天美18| 女性无套免费网站在线看| 亚洲国产成人久久精品大牛影视| 国产又黄又爽又猛的免费视频播放| 亚洲阿v天堂在线2017免费| 久久亚洲精品国产精品| 最近2019中文字幕免费看最新| 黄色a级免费网站| 久久精品国产亚洲AV无码麻豆| 日韩成全视频观看免费观看高清| 国产特黄一级一片免费| 亚洲免费观看在线视频| 亚洲精品无码成人片在线观看 | 亚洲无码精品浪潮| 1000部拍拍拍18勿入免费视频下载 | 日本亚洲欧美色视频在线播放 | 边摸边脱吃奶边高潮视频免费| 亚洲色婷婷一区二区三区| 在线视频免费观看爽爽爽| 永久免费无码日韩视频| 亚洲小说区图片区| 国产亚洲视频在线播放| 最近2019中文字幕免费看最新| 97人妻精品全国免费视频| 亚洲av中文无码乱人伦在线观看 | 毛片免费全部免费观看| a毛片全部免费播放| 爱爱帝国亚洲一区二区三区| 亚洲午夜在线电影| 亚洲欧洲精品成人久久奇米网 | 亚洲av永久中文无码精品综合 | 亚洲精品9999久久久久无码| 国产亚洲成av片在线观看| 国产片免费在线观看| 青青视频观看免费99| 国产无遮挡无码视频免费软件 | 黄色免费网址在线观看| 亚洲国产成人精品久久| 久久精品国产精品亚洲蜜月| 亚洲第一成人影院|