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

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

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

    javaGrowing

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      92 隨筆 :: 33 文章 :: 49 評論 :: 0 Trackbacks
    轉自 www.javaresearch.org
    作者 fishandfly

    1.使ApplicationResources.properties支持中文
    建立一個ApplicationResources_ISO.properties文件,把應用程序用的message都寫進去,然后在dos下執行這個命令,
    native2ascii -encoding gb2312 ApplicationResources_ISO.properties ApplicationResources.properties
    這樣就會將ISO編碼的ApplicationResources轉換成GB2312編碼的格式了,同時保存到ApplicationResources.properties.
    native2ascii這個工具是jdk自帶的一個東東,所以如果path都設定正確就可以直接運行了,你可以在$java_home$/bin下找到他。
    轉換后的中文類似于這個樣子
    iso 格式下 :tj.type=商品車類型
    gb2312格式下 :tj.type=\u5546\u54c1\u8f66\u7c7b\u578b
    然后在struts-config.xml中設置應用這個資源文件
    <message-resources parameter="com.huahang.tj.ApplicationResources" key="org.apache.struts.action.MESSAGE" />
    開發jsp時在jsp的開頭寫上<%@ page contentType="text/html; charset=gb2312" %>,將字符集設置成gb2312就可以了。

    2.使數據庫操作支持中文。
    數據庫操作支持中文一直讓我比較頭痛,但是感謝善解人衣向我推薦了www.chinaxp.org,這個網站是用struts框架開發的,而且
    開放源碼,下載了源碼后發現它的中文處理得很好,閱讀部分源碼,沒有發現什么特殊的字符集轉換,很納悶,偶然看到樓上網友
    留言知道原來servlet可以統一設置字符轉換。chinaxp.org就是這么做的。
    在web.xml中加上
    <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>com.huahang.tj.struts.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GB2312</param-value>
    </init-param>
    <init-param>
    <param-name>ignore</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <servlet-name>action</servlet-name>
    </filter-mapping>
    這里會涉及一個bean,源碼如下:
    /*
    * XP Forum
    *
    * Copyright Coffee 2002-2003 RedSoft Group. All rights reserved.
    *
    */
    package com.huahang.tj.struts.filters;

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

    /**
    * <p>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 <a href="mailto:jwtronics@yahoo.com">John Wong</a>
    *
    * @version $Id: SetCharacterEncodingFilter.java,v 1.1 2002/04/10 13:59:27 johnwong Exp $
    */
    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);

    }

    }//EOC
    加上這個后,在action中就可以直接從form中接收gb2312編碼的數據了,返回時自然也是gb2312了。
    但是這個好像需要servlet 2.2以上的容器

    綜合上面的方法,我解決了struts中的中文問題,現在還沒發現新的問題。

    我的環境是
    windows2000 Professional,tomcat 4.04 , struts1.1b2

    posted on 2005-12-27 15:56 javaGrowing 閱讀(366) 評論(0)  編輯  收藏 所屬分類: struts學習

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


    網站導航:
     
    主站蜘蛛池模板: 无码中文字幕av免费放| 免费A级毛片在线播放| 午夜一级毛片免费视频| 亚洲欧洲精品久久| 亚洲一级毛片免费看| 亚洲理论片在线中文字幕| 无码国产精品一区二区免费| 亚洲激情黄色小说| 欧洲精品成人免费视频在线观看| wwwxxx亚洲| 在线观着免费观看国产黄| 国产精品亚洲五月天高清| 亚洲人成国产精品无码| 国产免费久久精品丫丫| 亚洲精品中文字幕乱码三区| 久久99免费视频| 亚洲激情校园春色| 在线中文高清资源免费观看| 免费看黄网站在线看| 中文字幕亚洲综合久久菠萝蜜 | 亚洲尹人香蕉网在线视颅| 少妇太爽了在线观看免费视频| 亚洲精品在线播放视频| 女性无套免费网站在线看| 免费无码国产V片在线观看| 亚洲一区爱区精品无码| 亚洲精品视频在线免费| 亚洲国产欧美日韩精品一区二区三区 | 久久久亚洲欧洲日产国码aⅴ | 亚洲乱码一二三四区麻豆| 日韩精品免费电影| 国产裸体美女永久免费无遮挡| 亚洲第一视频网站| 国产成人无码a区在线观看视频免费| 黄色免费在线观看网址| 亚洲综合自拍成人| 亚洲国产精品无码久久久久久曰 | 两个人看的www免费| 亚洲午夜电影在线观看| 亚洲成AⅤ人影院在线观看| 四虎影视成人永久免费观看视频 |