Java URI和URL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chennai1101/article/details/84783726

1. URI统一资源标识符

URI(Uniform Resource Identify),统一资源标识符,是一个用于标识某一互联网资源名称的字符串。

URI的结构是 [scheme:]scheme-specific-part[#fragment][scheme:][//authority][path][?query][#fragment]

String[] address = new String[]{
        "http://user:[email protected]:8080/a/b/c?q=java#fragment",
        "tel:+123-4567-8910#frag"
};

for (String addr : address) {
    URI uri = new URI(addr);

    System.out.println("URL:        " + uri);
    System.out.println("Scheme:     " + uri.getScheme());
    if (uri.isOpaque()) {
        System.out.println("Specific:   " + uri.getSchemeSpecificPart());
    } else {
        System.out.println("UserInfo:   " + uri.getUserInfo());
        System.out.println("Authority:  " + uri.getAuthority());
        System.out.println("Host:       " + uri.getHost());
        System.out.println("Port:       " + uri.getPort());
        System.out.println("Path:       " + uri.getPath());
        System.out.println("Query:      " + uri.getQuery());
    }
    System.out.println("Fragment:   " + uri.getFragment());
}

opaque表示URI是不是透明的,一个不透明的URI一般是不分层次的。输出

URL:        http://user:[email protected]:8080/a/b/c?q=java#fragment
Scheme:     http
UserInfo:   user:pwd
Authority:  user:[email protected]:8080
Host:       www.abc.com
Port:       8080
Path:       /a/b/c
Query:      q=java
Fragment:   fragment

URL:        tel:+123-4567-8910#frag
Scheme:     tel
Specific:   +123-4567-8910
Fragment:   frag

2. URL统一资源定位符

URL(Uniform Resource Location),统一资源定位符,可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。URL主要由Protocol://Authority/File#ref组成。

String[] address = new String[]{
        "http://user:[email protected]:80/a/b/c?q=java#fragment",
        "ftp://www.abc.com:8080/"
};

for (String addr : address) {
    URL url = new URL(addr);

    System.out.println("URL:        " + url);
    System.out.println("Protocol:   " + url.getProtocol());
    System.out.println("UserInfo:   " + url.getUserInfo());
    System.out.println("Authority:  " + url.getAuthority());
    System.out.println("Host:       " + url.getHost());
    System.out.println("Port:       " + url.getPort());
    System.out.println("DefaultPort:" + url.getDefaultPort());
    System.out.println("Path:       " + url.getPath());
    System.out.println("File:       " + url.getFile());
    System.out.println("Query:      " + url.getQuery());
    System.out.println("Ref:        " + url.getRef());
}

其中Authority包含UserInfo、Host和Port,File由Path和Query组成。输出

URL:        http://user:[email protected]:80/a/b/c?q=java#fragment
Protocol:   http
UserInfo:   user:pwd
Authority:  user:[email protected]:80
Host:       www.abc.com
Port:       80
DefaultPort:80
Path:       /a/b/c
File:       /a/b/c?q=java
Query:      q=java
Ref:        fragment

URL:        ftp://www.abc.com:8080/
Protocol:   ftp
UserInfo:   null
Authority:  www.abc.com:8080
Host:       www.abc.com
Port:       8080
DefaultPort:21
Path:       /
File:       /
Query:      null
Ref:        null

3. URLEncoder和URLDecoder

将非文本内容转换成"%xx"的形式。

猜你喜欢

转载自blog.csdn.net/chennai1101/article/details/84783726
今日推荐