無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          HttpServletRequest getQueryString();

          Posted on 2009-08-20 22:35 Gavin.lee 閱讀(3482) 評論(0)  編輯  收藏 所屬分類: web 積累(前端 + 后臺)

          今天出了很大的紕漏,我們站上工行充值渠道瘋狂掉單,原因是開發包陳舊,但是沒法查到日志,寫的日志全是空文件,原因就是我將request.getQueryString()寫到文件中當日志,怪我對這個方法理解不透,回來好好反省一下,查了api,寫了這個方法:

          api第一句:Returns the query string that is contained in the request URL after the path,這就說明它只對get方法拋的數據有效。post方法傳的參數getQueryString將什么都得不到。

          我的總結:

          import java.io.UnsupportedEncodingException;
          import java.net.URLEncoder;
          import java.util.Enumeration;

          import javax.servlet.http.HttpServletRequest;

          public class QueryString {    
              
          private StringBuffer query = new StringBuffer();

              
          public QueryString(String name, String value) {
                  encode(name, value);
              }


              
          public synchronized void add(String name, String value) {
                  query.append(
          '&');
                  encode(name, value);
              }


              
          private synchronized void encode(String name, String value) {
                  
          try {
                      query.append(URLEncoder.encode(name, 
          "UTF-8"));
                      query.append(
          '=');
                      value 
          = value.replaceAll(" ""%20");
                      query.append(value);
                  }
           catch (UnsupportedEncodingException e) {
                      e.printStackTrace();
                  }
                  
              }


              
          public String getQuery() {
                  
          return query.toString();
              }


              
          public String toString() {
                  
          return getQuery();
              }

              

              
          /**
               * 直接接受request
               * 注:request中提供的getQueryString方法只對Get方法才能生效,
               * 在我們不知道方法的情況下最好重寫getQueryString
               * 
          @param request
               * 
          @return
               
          */

              
          public static String getQueryString(HttpServletRequest request) {
                  
          boolean first = true;
                  StringBuffer strbuf 
          = new StringBuffer("");
                  Enumeration emParams 
          = request.getParameterNames();
                  
          //do-while
                  do {
                      
          if (!emParams.hasMoreElements()) {
                          
          break;
                      }

                      
                      String sParam 
          = (String) emParams.nextElement();
                      String[] sValues 
          = request.getParameterValues(sParam);    
                      
                      String sValue 
          = "";            
                      
          for (int i = 0; i < sValues.length; i++{
                          sValue 
          = sValues[i];
                          
          if (sValue != null && sValue.trim().length() != 0 && first == true{
                              
          //第一個參數
                              first = false;                    
                              strbuf.append(sParam).append(
          "=").append(sValue);
                          }
           else if (sValue != null && sValue.trim().length() != 0 && first == false{
                              strbuf.append(
          "&").append(sParam).append("=").append(sValue);
                          }

                      }

                  }
           while (true);

                  
          return strbuf.toString();
              }

              
              
          public static void main(String args[]) {
                  QueryString qs 
          = new QueryString("parms1""1");
                  qs.add(
          "parms""2");
                  qs.add(
          "parms""3");
                  
                  System.out.println(qs.toString());    
          //parms1=1&parms=2&parms=3
              }

          }

          主站蜘蛛池模板: 云梦县| 五台县| 无棣县| 夏邑县| 江口县| 普格县| 金华市| 鸡泽县| 钟山县| 丹江口市| 盐亭县| 武强县| 淮滨县| 台前县| 怀柔区| 湖北省| 镇远县| 宣化县| 三明市| 高要市| 咸阳市| 和田县| 灯塔市| 舟山市| 荥阳市| 南昌市| 怀柔区| 越西县| 攀枝花市| 镶黄旗| 玛沁县| 凤冈县| 图们市| 兴和县| 梁河县| 新安县| 富顺县| 晋中市| 奉节县| 开鲁县| 鄂伦春自治旗|