Java基础巩固——网络编程基础 URL

此教程总结是根据JDK 8编写的

什么是URL?

URL是统一资源定位器的首字母缩写。它是Internet上资源的引用(地址)

URL有两个主要组件:

  • 协议标识符:对于URL http://example.com,协议标识符为http
  • 资源名称:对于URL http://example.com,资源名称为example.com

资源名是资源的完整地址。资源名称的格式完全取决于所使用的协议,但对于大多数协议(包括HTTP协议),资源名称包含以下一个或多个组件:

主机名 资源所在机器的名称。
文件名 计算机上文件的路径名。
端口号

要连接的端口号(通常是可选的)。 

Reference 对资源中已命名锚的引用,它通常标识文件中的特定位置(通常是可选的)。

创建URL

创建URL对象的最简单方法是使用String,该String表示URL地址的人类可读形式。这通常是其他人用于URL的表单。在Java程序中,您可以使用包含此文本的String来创建URL对象:

URL myURL = new URL("http://example.com/");

上面创建的URL对象表示绝对路径的URL。绝对路径的URL包含到达相关资源所需的所有信息。您还可以从相对路径的URL地址创建URL对象。

创建相对路径URL

相对URL规范通常在HTML文件中使用,例如:

<a href="PicturesOfMe.html">Pictures of Me</a>
<a href="MyKids.html">Pictures of My Kids</a>

其中  href="PicturesOfMe.html"  指向了相对路径的PicturesOfMe.html文件

我们可是使用绝对路径URL创建相对路径的URL:http://example.com/pages/,如下所示:

URL myURL = new URL("http://example.com/pages/");
//page1URL生成的URL相当于http://example.com/pages/page1.html
URL page1URL = new URL(myURL, "page1.html");
//page2URL生成的URL相当于http://example.com/pages/page2.html
URL page2URL = new URL(myURL, "page2.html");

对此示例中的特殊字符进行编码很容易,因为只有一个字符需要编码,但对于具有多个这些字符的URL地址,或者如果您不确定在编写代码时需要访问哪些URL地址,您可以使用java.net.URI类的多参数构造函数自动为您处理编码。

URI uri = new URI("http", "example.com", "/hello world/", "");

然后将URI转换为URL。

URL url = uri.toURL();

如果构造函数的参数引用null或未知协议,则四个URL构造函数中的每一个都会抛出MalformedURLException。我们可以通过在try / catch对中嵌入URL构造函数语句来捕获和处理此异常,如下所示:

try {
    URL myURL = new URL(...);
} 
catch (MalformedURLException e) {
    // exception handler code here
    // ...
}

注意: 

URLs是所有的信息都是“一次写入”对象的属性中。一旦创建了URL对象,就无法更改其任何属性(协议,主机名,文件名或端口号)。

解析URL

URL类提供了一些方法,可以让你查询URL的对象。您可以使用以下访问器方法从URL获取协议,权限,主机名,端口号,路径,查询,文件名和引用:

getProtocol

返回URL的协议标识符组件。

getAuthority

返回URL的权限组件。

getHost

返回URL的主机名组件。

getPort

返回URL的端口号组件。该getPort方法返回一个整数,即端口号。如果未设置端口,则getPort返回-1。

getPath

返回此URL的路径组件。

getQuery

返回此URL的查询组件。

getFile

返回URL的文件名组件。该getFile方法返回相同getPath的值,加上值的串联(getQuery如果有的话)。

getRef

返回URL的引用组件。

猜你喜欢

转载自blog.csdn.net/qq_40929531/article/details/84375557
今日推荐