home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / xampp / xampp-tomcat-addon-1.4.9-installer.exe / servlet-api.jar / javax / servlet / http / HttpUtils.class (.txt) < prev    next >
Encoding:
Java Class File  |  2004-08-28  |  4.3 KB  |  132 lines

  1. package javax.servlet.http;
  2.  
  3. import java.io.IOException;
  4. import java.io.UnsupportedEncodingException;
  5. import java.util.Hashtable;
  6. import java.util.ResourceBundle;
  7. import java.util.StringTokenizer;
  8. import javax.servlet.ServletInputStream;
  9.  
  10. /** @deprecated */
  11. public class HttpUtils {
  12.    private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";
  13.    private static ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings");
  14.  
  15.    public static Hashtable parseQueryString(String s) {
  16.       String[] valArray = null;
  17.       if (s == null) {
  18.          throw new IllegalArgumentException();
  19.       } else {
  20.          Hashtable ht = new Hashtable();
  21.          StringBuffer sb = new StringBuffer();
  22.  
  23.          String key;
  24.          for(StringTokenizer st = new StringTokenizer(s, "&"); st.hasMoreTokens(); ht.put(key, valArray)) {
  25.             String pair = st.nextToken();
  26.             int pos = pair.indexOf(61);
  27.             if (pos == -1) {
  28.                throw new IllegalArgumentException();
  29.             }
  30.  
  31.             key = parseName(pair.substring(0, pos), sb);
  32.             String val = parseName(pair.substring(pos + 1, pair.length()), sb);
  33.             if (!ht.containsKey(key)) {
  34.                valArray = new String[]{val};
  35.             } else {
  36.                String[] oldVals = (String[])ht.get(key);
  37.                valArray = new String[oldVals.length + 1];
  38.  
  39.                for(int i = 0; i < oldVals.length; ++i) {
  40.                   valArray[i] = oldVals[i];
  41.                }
  42.  
  43.                valArray[oldVals.length] = val;
  44.             }
  45.          }
  46.  
  47.          return ht;
  48.       }
  49.    }
  50.  
  51.    public static Hashtable parsePostData(int len, ServletInputStream in) {
  52.       if (len <= 0) {
  53.          return new Hashtable();
  54.       } else if (in == null) {
  55.          throw new IllegalArgumentException();
  56.       } else {
  57.          byte[] postedBytes = new byte[len];
  58.  
  59.          try {
  60.             int offset = 0;
  61.  
  62.             do {
  63.                int inputLen = in.read(postedBytes, offset, len - offset);
  64.                if (inputLen <= 0) {
  65.                   String msg = lStrings.getString("err.io.short_read");
  66.                   throw new IllegalArgumentException(msg);
  67.                }
  68.  
  69.                offset += inputLen;
  70.             } while(len - offset > 0);
  71.          } catch (IOException e) {
  72.             throw new IllegalArgumentException(e.getMessage());
  73.          }
  74.  
  75.          try {
  76.             String postedBody = new String(postedBytes, 0, len, "8859_1");
  77.             return parseQueryString(postedBody);
  78.          } catch (UnsupportedEncodingException e) {
  79.             throw new IllegalArgumentException(e.getMessage());
  80.          }
  81.       }
  82.    }
  83.  
  84.    private static String parseName(String s, StringBuffer sb) {
  85.       sb.setLength(0);
  86.  
  87.       for(int i = 0; i < s.length(); ++i) {
  88.          char c = s.charAt(i);
  89.          switch (c) {
  90.             case '%':
  91.                try {
  92.                   sb.append((char)Integer.parseInt(s.substring(i + 1, i + 3), 16));
  93.                   i += 2;
  94.                } catch (NumberFormatException var6) {
  95.                   throw new IllegalArgumentException();
  96.                } catch (StringIndexOutOfBoundsException var7) {
  97.                   String rest = s.substring(i);
  98.                   sb.append(rest);
  99.                   if (rest.length() == 2) {
  100.                      ++i;
  101.                   }
  102.                }
  103.                break;
  104.             case '+':
  105.                sb.append(' ');
  106.                break;
  107.             default:
  108.                sb.append(c);
  109.          }
  110.       }
  111.  
  112.       return sb.toString();
  113.    }
  114.  
  115.    public static StringBuffer getRequestURL(HttpServletRequest req) {
  116.       StringBuffer url = new StringBuffer();
  117.       String scheme = req.getScheme();
  118.       int port = req.getServerPort();
  119.       String urlPath = req.getRequestURI();
  120.       url.append(scheme);
  121.       url.append("://");
  122.       url.append(req.getServerName());
  123.       if (scheme.equals("http") && port != 80 || scheme.equals("https") && port != 443) {
  124.          url.append(':');
  125.          url.append(req.getServerPort());
  126.       }
  127.  
  128.       url.append(urlPath);
  129.       return url;
  130.    }
  131. }
  132.