亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? netutils.java

?? 這個是網絡上下載的一個struct框架的程序
?? JAVA
字號:
/* ============================================================================                   The Apache Software License, Version 1.1 ============================================================================ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of  source code must  retain the above copyright  notice,    this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice,    this list of conditions and the following disclaimer in the documentation    and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must    include  the following  acknowledgment:  "This product includes  software    developed  by the  Apache Software Foundation  (http://www.apache.org/)."    Alternately, this  acknowledgment may  appear in the software itself,  if    and wherever such third-party acknowledgments normally appear. 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be    used to  endorse or promote  products derived from  this software without    prior written permission. For written permission, please contact    apache@apache.org. 5. Products  derived from this software may not  be called "Apache", nor may    "Apache" appear  in their name,  without prior written permission  of the    Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software  consists of voluntary contributions made  by many individuals on  behalf of the Apache Software  Foundation and was  originally created by Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache Software Foundation, please see <http://www.apache.org/>.*/package com.struts2.framework.util;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.util.BitSet;import java.util.Iterator;import java.util.Map;/** * A collection of <code>File</code>, <code>URL</code> and filename * utility methods * * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a> * @version CVS $Id: NetUtils.java,v 1.6.2.2 2002/08/06 13:36:48 cziegeler Exp $ */public class NetUtils {    /**     * Array containing the safe characters set as defined by RFC 1738     */    private static BitSet safeCharacters;    private static final char[] hexadecimal =    {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',     'A', 'B', 'C', 'D', 'E', 'F'};    static {        safeCharacters = new BitSet(256);        int i;        // 'lowalpha' rule        for (i = 'a'; i <= 'z'; i++) {            safeCharacters.set(i);        }        // 'hialpha' rule        for (i = 'A'; i <= 'Z'; i++) {            safeCharacters.set(i);        }        // 'digit' rule        for (i = '0'; i <= '9'; i++) {            safeCharacters.set(i);        }        // 'safe' rule        safeCharacters.set('$');        safeCharacters.set('-');        safeCharacters.set('_');        safeCharacters.set('.');        safeCharacters.set('+');        // 'extra' rule        safeCharacters.set('!');        safeCharacters.set('*');        safeCharacters.set('\'');        safeCharacters.set('(');        safeCharacters.set(')');        safeCharacters.set(',');        // special characters common to http: file: and ftp: URLs ('fsegment' and 'hsegment' rules)        safeCharacters.set('/');        safeCharacters.set(':');        safeCharacters.set('@');        safeCharacters.set('&');        safeCharacters.set('=');    }    /**     * Decode a path     *     * @param path the path to decode     * @return the decoded path     */    public static String decodePath(String path) {        // VG: JDK1.2 MEthods throws an exception; JDK1.3 - not.        // http://java.sun.com/products/jdk/1.2/docs/api/java/net/URLDecoder.html#decode(java.lang.String)        try {            return java.net.URLDecoder.decode( path );        } catch (Exception e) {            return path;        }    }    /**     * Encode a path as required by the URL specificatin (<a href="http://www.ietf.org/rfc/rfc1738.txt">     * RFC 1738</a>). This differs from <code>java.net.URLEncoder.encode()</code> which encodes according     * to the <code>x-www-form-urlencoded</code> MIME format.     *     * @param path the path to encode     * @return the encoded path     */    public static String encodePath(String path) {       // stolen from org.apache.catalina.servlets.DefaultServlet ;)        /**         * Note: This code portion is very similar to URLEncoder.encode.         * Unfortunately, there is no way to specify to the URLEncoder which         * characters should be encoded. Here, ' ' should be encoded as "%20"         * and '/' shouldn't be encoded.         */        int maxBytesPerChar = 10;        StringBuffer rewrittenPath = new StringBuffer(path.length());        ByteArrayOutputStream buf = new ByteArrayOutputStream(maxBytesPerChar);        OutputStreamWriter writer = null;        try {            writer = new OutputStreamWriter(buf, "UTF8");        } catch (Exception e) {            e.printStackTrace();            writer = new OutputStreamWriter(buf);        }        for (int i = 0; i < path.length(); i++) {            int c = (int) path.charAt(i);            if (safeCharacters.get(c)) {                rewrittenPath.append((char)c);            } else {                // convert to external encoding before hex conversion                try {                    writer.write(c);                    writer.flush();                } catch(IOException e) {                    buf.reset();                    continue;                }                byte[] ba = buf.toByteArray();                for (int j = 0; j < ba.length; j++) {                    // Converting each byte in the buffer                    byte toEncode = ba[j];                    rewrittenPath.append('%');                    int low = (int) (toEncode & 0x0f);                    int high = (int) ((toEncode & 0xf0) >> 4);                    rewrittenPath.append(hexadecimal[high]);                    rewrittenPath.append(hexadecimal[low]);                }                buf.reset();            }        }        return rewrittenPath.toString();    }    /**     * Returns the path of the given resource.     *     * @param uri The URI of the resource     * @return the resource path     */    public static String getPath(String uri) {        int i = uri.lastIndexOf('/');        if(i > -1)            return uri.substring(0, i);        i = uri.indexOf(':');        return (i > -1) ? uri.substring(i+1,uri.length()) : "";    }   /**    * Remove path and file information from a filename returning only its    * extension  component    *    * @param uri The filename    * @return The filename extension (with starting dot!)    */    public static String getExtension(String uri) {        int dot = uri.lastIndexOf('.');        if (dot > -1) {            uri = uri.substring(dot);            int slash = uri.lastIndexOf('/');            if (slash > -1) {                return null;            } else {                int sharp = uri.lastIndexOf('#');                if (sharp > -1) {                    // uri starts with dot already                    return uri.substring(0, sharp);                } else {                    int mark = uri.lastIndexOf('?');                    if (mark > -1) {                        // uri starts with dot already                        return uri.substring(0, mark);                    } else {                        return uri;                    }                }            }        } else {            return null;        }    }    /**     * Absolutize a relative resource on the given absolute path.     *     * @param path The absolute path     * @param relativeResource The relative resource     * @return the absolutized resource     */    public static String absolutize(String path, String relativeResource) {        if (("".equals(path)) || (path == null)) return relativeResource;        if (relativeResource.charAt(0) != '/') {            int length = path.length() - 1;            boolean slashPresent = (path.charAt(length) == '/');            StringBuffer b = new StringBuffer();            b.append(path);            if (!slashPresent) b.append('/');            b.append(relativeResource);            return b.toString();        } else {            // resource is already absolute            return relativeResource;        }    }    /**     * Relativize an absolute resource on a given absolute path.     *     * @param path The absolute path     * @param relativeResource The absolute resource     * @return the resource relative to the given path     */    public static String relativize(String path, String absoluteResource) {        if (("".equals(path)) || (path == null)) return absoluteResource;        if (path.charAt(path.length() - 1) != '/') path += "/";        if (absoluteResource.startsWith(path)) {            // resource is direct descentant            return absoluteResource.substring(path.length());        } else {            // resource is not direct descendant            int index = StringUtils.matchStrings(path, absoluteResource);            if (index > 0 && path.charAt(index-1) != '/') {                index = path.substring(0, index).lastIndexOf('/');                index++;            }            String pathDiff = path.substring(index);            String resource = absoluteResource.substring(index);            int levels = StringUtils.count(pathDiff, '/');            StringBuffer b = new StringBuffer();            for (int i = 0; i < levels; i++) {                b.append("../");            }            b.append(resource);            return b.toString();        }    }    /**     * Normalize a uri containing ../ and ./ paths.     *     * @param uri The uri path to normalize     * @return The normalized uri     */    public static String normalize(String uri) {        String[] dirty = StringUtils.split(uri, "/");        int length = dirty.length;        String[] clean = new String[length];        boolean path;        boolean finished;        while (true) {            path = false;            finished = true;            for (int i = 0, j = 0; (i < length) && (dirty[i] != null); i++) {                if (".".equals(dirty[i])) {                    // ignore                } else if ("..".equals(dirty[i])) {                    clean[j++] = dirty[i];                    if (path) finished = false;                } else {                    if ((i+1 < length) && ("..".equals(dirty[i+1]))) {                        i++;                    } else {                        clean[j++] = dirty[i];                        path = true;                    }                }            }            if (finished) {                break;            } else {                dirty = clean;                clean = new String[length];            }        }        StringBuffer b = new StringBuffer(uri.length());        for (int i = 0; (i < length) && (clean[i] != null); i++) {            b.append(clean[i]);            if ((i+1 < length) && (clean[i+1] != null)) b.append("/");        }        return b.toString();    }    /**     * Remove parameters from a uri.     *     * @param uri The uri path to deparameterize.     * @param parameters The map that collects parameters.     * @return The cleaned uri     */    public static String deparameterize(String uri, Map parameters) {        int i = uri.lastIndexOf('?');        if (i == -1) return uri;        String[] params = StringUtils.split(uri.substring(i+1), "&");        for (int j = 0; j < params.length; j++) {            String p = params[j];            int k = p.indexOf('=');            if (k == -1) break;            String name = p.substring(0, k);            String value = p.substring(k+1);            parameters.put(name, value);        }        return uri.substring(0, i);    }    public static String parameterize(String uri, Map parameters) {        if (parameters.size() == 0) {            return uri;        }        StringBuffer buffer = new StringBuffer(uri);        buffer.append('?');        for (Iterator i = parameters.entrySet().iterator(); i.hasNext();) {            Map.Entry entry = (Map.Entry)i.next();            buffer.append(entry.getKey());            buffer.append('=');            buffer.append(entry.getValue());            if (i.hasNext()) {                buffer.append('&');            }        }        return buffer.toString();    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线观看一区| 色欧美乱欧美15图片| 成人爽a毛片一区二区免费| 欧美在线免费播放| 国产欧美日韩精品一区| 日韩精品久久理论片| 91女人视频在线观看| 国产视频在线观看一区二区三区| 亚洲色图欧美激情| 国产乱码精品一区二区三| 精品视频一区三区九区| 一区二区中文字幕在线| 国产永久精品大片wwwapp| 欧美精品xxxxbbbb| 亚洲一区二区精品久久av| 粉嫩绯色av一区二区在线观看| 欧美精品日韩综合在线| 亚洲综合一二三区| 91女神在线视频| 国产精品成人免费| 成人精品免费看| 久久久av毛片精品| 狠狠网亚洲精品| 日韩欧美视频一区| 免费三级欧美电影| 这里只有精品99re| 日韩不卡手机在线v区| 欧美日本韩国一区| 青青草国产成人av片免费| 91麻豆精品国产91久久久更新时间| 一区二区三区免费观看| 色av一区二区| 一区二区三区在线观看视频| 91免费精品国自产拍在线不卡| 欧美激情综合网| 99久久综合色| 亚洲精品免费在线| 欧美日韩一区二区三区四区| 亚洲高清久久久| 欧美精品日日鲁夜夜添| 美女任你摸久久| www久久久久| 成人国产电影网| 亚洲精品综合在线| 欧美精品亚洲一区二区在线播放| 五月激情综合网| 精品国产污污免费网站入口 | 欧美影视一区在线| 天堂va蜜桃一区二区三区| 日韩免费看的电影| 国产精品69毛片高清亚洲| 亚洲视频一区在线观看| 欧美丝袜丝交足nylons| 久久精品国产一区二区| 国产女人18毛片水真多成人如厕| 成人免费视频app| 一区二区三区精品| 精品日产卡一卡二卡麻豆| 国产91精品精华液一区二区三区 | 91在线观看视频| 亚洲一区在线看| 久久色在线观看| 色妞www精品视频| 全部av―极品视觉盛宴亚洲| 国产亚洲精品免费| 欧美日韩亚洲综合在线| 韩国三级中文字幕hd久久精品| 国产精品美女一区二区在线观看| 欧美伊人精品成人久久综合97| 韩国成人在线视频| 一区二区三区四区av| 久久久美女艺术照精彩视频福利播放| thepron国产精品| 伦理电影国产精品| 一区二区三区在线观看欧美| 久久免费精品国产久精品久久久久| 91在线视频免费观看| 久草在线在线精品观看| 亚洲女同一区二区| 久久久久久久久久看片| 欧美日韩高清在线播放| 不卡的av在线播放| 另类小说欧美激情| 亚洲电影在线播放| 18欧美亚洲精品| 欧美成人一级视频| 欧美日韩在线综合| 97精品电影院| 国产成人av网站| 美国毛片一区二区| 午夜精品福利一区二区三区av| 国产精品网站在线播放| 精品粉嫩超白一线天av| 欧美日本一区二区三区| 一本久久精品一区二区| 国产成人综合精品三级| 久久99国产精品久久99| 日韩精品国产精品| 午夜激情一区二区三区| 亚洲成人av电影在线| 亚洲欧美一区二区三区久本道91| 久久蜜桃av一区二区天堂| 欧美岛国在线观看| 欧美一区二区三区四区高清| 欧美午夜精品一区| 在线一区二区三区做爰视频网站| 成人免费看的视频| 成人污视频在线观看| 国产一区二区在线免费观看| 免费精品视频最新在线| 日韩福利电影在线观看| 丝瓜av网站精品一区二区| 亚洲成人av电影| 同产精品九九九| 日韩激情av在线| 免费看欧美美女黄的网站| 秋霞电影一区二区| 久久国产视频网| 国产真实乱子伦精品视频| 国产乱一区二区| 成人一区二区三区视频在线观看| 黑人巨大精品欧美黑白配亚洲| 国产精品一区二区免费不卡| 成人一区二区三区| 94-欧美-setu| 欧美精品乱码久久久久久| 欧美猛男gaygay网站| 日韩视频免费观看高清完整版在线观看| 欧美高清hd18日本| 精品免费视频一区二区| 日本一区二区视频在线| 综合久久给合久久狠狠狠97色| 成人欧美一区二区三区| 亚洲sss视频在线视频| 久久国产精品一区二区| 国产ts人妖一区二区| 91视视频在线观看入口直接观看www| 色综合婷婷久久| 欧美一区二区国产| 久久久精品一品道一区| 亚洲欧美偷拍另类a∨色屁股| 亚洲国产成人av| 国产在线精品国自产拍免费| 日韩欧美国产午夜精品| 26uuu亚洲综合色欧美 | 99国产精品国产精品久久| 欧洲av一区二区嗯嗯嗯啊| 日韩欧美第一区| 自拍偷拍亚洲激情| 男男gaygay亚洲| 91网站在线播放| 日韩欧美国产wwwww| 国产精品久久影院| 日本伊人精品一区二区三区观看方式| 国产一区二区三区免费在线观看| 99国产精品久久| 久久午夜电影网| 亚洲一卡二卡三卡四卡五卡| 狠狠色狠狠色综合| 在线免费观看日韩欧美| 久久人人超碰精品| 午夜久久电影网| 99久久精品一区二区| 日韩欧美成人激情| 亚洲国产综合在线| 高清日韩电视剧大全免费| 777色狠狠一区二区三区| 国产精品久久久久久久久晋中| 亚洲v日本v欧美v久久精品| 懂色av中文一区二区三区 | 男女男精品网站| 91麻豆国产福利精品| 欧美国产日本韩| 国内成+人亚洲+欧美+综合在线| 欧美亚洲自拍偷拍| 1区2区3区国产精品| 春色校园综合激情亚洲| 精品久久一区二区| 日韩福利电影在线观看| 欧美熟乱第一页| 亚洲欧美日韩电影| 成人黄色免费短视频| www国产精品av| 精久久久久久久久久久| 91精品国产色综合久久不卡蜜臀 | 欧美在线免费观看视频| 最新日韩av在线| 9l国产精品久久久久麻豆| 国产视频一区不卡| 精品一区二区在线观看| 欧美一区二区三区日韩| 日韩中文字幕不卡| 欧美日韩色一区| 午夜电影一区二区| 欧美蜜桃一区二区三区| 五月综合激情日本mⅴ| 欧美日韩不卡在线| 国产福利不卡视频| 亚洲国产精品成人综合色在线婷婷| 国产精一区二区三区|