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

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

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

    lizongbo 的 編程學習

    http://618119.com

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      23 Posts :: 1 Stories :: 78 Comments :: 0 Trackbacks
    有同事討論到關于url編碼的問題。
    因此總結以下幾點方法供大家參考。
    首先,對于post請求的時候,通過過濾器就可以搞定,以下的方法主要是針對get方式的亂碼處理。

    1. 手工對字符串編碼解碼的方法為:
    java.net.URLEncoder.encode("測試","UTF-8");
    java.net.URLDecoder.decode("%E6%B5%8B%E8%AF%95%26%3Faaa","UTF-8");
    這個方法適用于自己從原始字符串中進行解碼處理。

    2. tomcat服務器的處理url編碼的方法:

    修改tomcat的server.xml增加指定的編碼,以代替tomcat默認的ISO-8859-1。
    需要增加的參數為:URIEncoding,
    比如下面的例子是制定解碼使用UTF-8,
    <Connector port="8080"
    maxThreads="800" minSpareThreads="25" maxSpareThreads="100"
    enableLookups="false" redirectPort="8443" acceptCount="0"
    debug="0" connectionTimeout="20000" URIEncoding="UTF-8"
    disableUploadTimeout="true" />
    如果用到了apache與tomcat 的整合,則還需要:
    <Connector port="8009" URIEncoding="UTF-8"
    enableLookups="false" redirectPort="8443" debug="0"
    protocol="AJP/1.3" maxThreads="1100" minSpareThreads="25" maxSpareThreads="100" acceptCount="0"/>
    (這個方法最簡單方便,但是使用這種的方法之后,代碼中就不需要也能有new String(strvalue.getBytes("ISO8859-1","GBK"); 這樣的處理方式)

    3.對于已經部署的系統,可能已經有其他同事對編碼使用了
    new String(strvalue.getBytes("ISO8859-1","GBK");
    這樣的方法作了處理,這個時候使用第二種方法就可能會影響到其它模塊的正常使用,

    因此,我們可以自己重新解析queryString我封裝了幾個方法。使用重新封裝的方法可以在不影響原來系統的情況下,正確的獲得參數。

    封裝的代碼如下,供大家參考:



    /**
    * 從請求的url字符串中解析參數,當request.getParameterValues()取得的參數值編碼值不正確的時候可以使用該方法
    * @param request HttpServletRequest
    * @param paramName String
    * @return String[] 返回多個同參數名的值
    */
    public static String[] getParamsFromQueryString(HttpServletRequest request,
    String paramName) {
    return getParamsFromQueryString(request.getQueryString(), paramName);
    }

    /**
    * 從請求的url字符串中解析參數,當request.getParameterValues()取得的參數值編碼值不正確的時候可以使用該方法
    * @param request HttpServletRequest
    * @param paramName String
    * @return String[]
    */
    public static String getParameterFromQueryString(HttpServletRequest request,
    String paramName) {
    return getParameterFromQueryString(request.getQueryString(), paramName);
    }

    /**
    * 從請求的url字符串中解析參數,當request.getParameter()取得的參數值編碼值不正確的時候可以使用該方法
    * @param queryString String
    * @param paramName String
    * @return String 只返回一個值
    */
    public static String getParameterFromQueryString(String queryString,
    String paramName) {
    String[] s = getParamsFromQueryString(queryString, paramName);
    if (s != null && s.length >= 1) {
    return s[0];
    }
    return null;
    }

    /**
    * 從請求的url字符串中解析參數,當request.getParameter()取得的參數值編碼值不正確的時候可以使用該方法
    * @param queryString String
    * @param paramName String
    * @return String[] 返回多個同參數名的值
    */
    public static String[] getParamsFromQueryString(String queryString,
    String paramName) {
    if (paramName == null || paramName.length() < 1 || paramName == null ||
    paramName.length() < 1) {
    return new String[0];
    }
    List rsl = new ArrayList();
    String params[] = queryString.split("&");
    for (int i = 0; i < params.length; i++) {
    // System.out.println(params[i]);
    if (params[i] != null && params[i].startsWith(paramName + "=")) {
    try {
    rsl.add(java.net.URLDecoder.decode(params[i].substring(paramName.
    length() +
    1), "UTF-8")); //根據需要修改自己要使用的編碼。
    }
    catch (UnsupportedEncodingException ex) {
    }
    }
    }
    return (String[]) rsl.toArray(new String[0]);
    }

    public static void main(String[] args) {
    //該例子演示解碼。
    //jsp和servlet中調用
    // System.out.println(getParameterFromQueryString(request.getQueryString(), "q"));
    //該例子示意的是gogole的url中的queryString。
    System.out.println(getParameterFromQueryString(
    "hl=zh-CN&newwindow=1&q=%E6%B5%8B%E8%AF%95%26%3Faaa&meta=", "q"));
    }


    posted on 2006-04-07 14:10 lizongbo 的編程學習 閱讀(6485) 評論(1)  編輯  收藏 所屬分類: java 積累
    主站蜘蛛池模板: 亚洲AV人无码综合在线观看| 波多野结衣视频在线免费观看| 久久亚洲综合色一区二区三区| 无码的免费不卡毛片视频| 免费人成无码大片在线观看| 老司机午夜免费视频| 国产偷v国产偷v亚洲高清| 亚洲av无码专区青青草原| 免费毛片在线播放| 亚洲国产AV一区二区三区四区 | 91在线免费观看| 亚洲女初尝黑人巨高清| 中文字幕无码日韩专区免费| 亚洲国产一区国产亚洲| 真实国产乱子伦精品免费| 亚洲二区在线视频| 在线看片无码永久免费aⅴ| 免费精品视频在线| 人人狠狠综合久久亚洲88| 曰批视频免费40分钟试看天天| 久久精品国产亚洲αv忘忧草| 好爽又高潮了毛片免费下载| 国产精品自拍亚洲| 久久精品九九亚洲精品天堂| 18女人水真多免费高清毛片 | caoporn国产精品免费| 亚洲av永久无码精品漫画| 免免费国产AAAAA片| 猫咪www免费人成网站| 久久精品国产亚洲AV网站| 成人免费午夜在线观看| 免费一级毛片在线播放放视频 | 一级女性全黄久久生活片免费| 国产成人无码综合亚洲日韩| 免费可以看黄的视频s色| 羞羞视频免费观看| 久久精品国产亚洲av麻豆色欲| 青青青青青青久久久免费观看| 免费观看一区二区三区| 亚洲欧美日韩中文无线码| 国产亚洲色婷婷久久99精品|