Java 程序获取 URL 的组成部分
URL 又称为 统一资源定位符,是一个字符串,用于指定网页、图像、视频、文件等 Web 资源在互联网上的位置。URL 有助于轻松访问它们,并有助于从 Web 服务器检索资源。URL 也称为 Internet 地址或 Web 地址。在本节中,我们将讨论如何在 Java 中获取 URL 的不同组成部分。
URL 的组成部分
以下是 URL 的组成部分 -
协议 - 协议指定使用哪种方法来访问 Web 资源。此方法用于指定客户端和服务器之间通信所使用的规则和规定。示例:HTTPS、HTTPS、FTP、SMTP
主机 - 主机标识资源的域,基本上是 IP 地址。示例:www.google.com
端口 - 端口指定处理请求的服务器。如果未指定端口,则采用默认服务器。示例 -80, 443
路径 - 路径以文件或目录的路径形式指定服务器上 Web 资源的位置。
查询字符串 - 用于将参数作为名称-值对传递给 Web 资源。名称值对以 & 分隔。
片段 - 用于定位 Web 资源中的特定部分,并通过 # 进行标识
URL 示例
https://www.example.com/path/to/file.html?key=value#fragment
协议:https
主机:www.example.com
端口:80
路径:/path/to/file.html
查询字符串:key=value
片段:fragment
现在,我们将讨论使用 Java 编程语言获取 URL 不同组件的各种方法。
方法 1:使用 URL 类
在此方法中,我们将使用 'java.net' 包中的 'URL' 类。它提供了各种内置函数来处理 url。现在,我们将实现一个 Java 程序来查找所有组件。
算法
使用 URL 类创建 URL 对象
在 try 块中,使用以下方法打印组件
getProtocol()
-
getHost())
getPort()
getPath()
-
getQuery()
getRef()
使用 catch() 捕获异常并使用 getMessage() 方法打印消息。
方法使用
getProtocol() − 此方法用于获取 URL 的协议组件。它返回一个字符串。
URL url = new URL("https://www.example.com"); String protocol = url.getProtocol(); // 为我们提供 URL 中使用的协议
getHost() − 此方法用于获取 URL 的主机组件。它返回一个字符串。
URL url = new URL("https://www.example.com"); String host = url.getHost();
getPort() − 此方法用于获取 URL 的端口号。它返回一个整数值。
URL url = new URL("https://www.example.com:8080"); int port = url.getPort();
getPath() − 此方法用于获取 URL 的路径。
URL url = new URL("https://www.example.com/path/to/resource"); String path = url.getPath();
getQuery() − 此方法用于获取 URL 的查询字符串。
URL url = new URL("https://www.example.com/path/to/resource?key1=value1&key2=value2"); String query = url.getQuery()
getRef() − 此方法用于获取 URL 的片段。
URL url = new URL("https://www.example.com/path/to/resource?key1=value1&key2=value2#section1"); String fragment = url.getRef();
示例
在此示例中,我们创建了一个 URL 对象,并在创建的 URL 对象上使用不同的方法来获取 URL 的不同组成部分。
import java.net.URL; public class Main { public static void main(String[] args) { try { URL url = new URL("https://www.example.com/path/to/file.html?key=value#fragment"); System.out.println("Protocol: " + url.getProtocol()); System.out.println("Host: " + url.getHost()); System.out.println("Port: " + url.getPort()); System.out.println("Path: " + url.getPath()); System.out.println("Query: " + url.getQuery()); System.out.println("Fragment: " + url.getRef()); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } }
输出
Protocol: https Host: www.example.com Port: -1 Path: /path/to/file.html Query: key=value Fragment: fragment
方法 2:使用 URI 类
在此方法中,我们将使用 'java.net' 包中的 'URI' 类。它提供各种内置函数来处理 url。现在,我们将实现一个 Java 程序来查找所有组件。
算法
使用 URI 类创建 URI 对象
在 try 块中,使用以下方法打印组件
getScheme()
getHost())
getPort()
getPath()
getQuery()
getFragment()
使用 catch() 捕获异常并使用 getMessage() 方法打印消息。
使用的方法
getScheme() −此方法类似于 getProtocol()。它用于获取 URL 的协议。
URL url = new URL("https://www.example.com/path/to/resource"); String scheme = url.getScheme();
getFragment() − 此方法类似于 getRef()。它用于获取 URL 的片段。
URI uri = new URI("https://www.example.com/path/to/resource?key1=value1&key2=value2#section1"); String fragment = uri.getFragment();
substring() − 此方法用于通过将子字符串的起始和结束索引作为参数,从较大的字符串中获取短字符串。
String str = "Hello, world!"; String substr1 = str.substring(0, 5); // 提取 "Hello" String substr2 = str.substring(7); // 提取 "world!"
indexOf() − 此方法用于查找字符串中特定字符的索引。
String str = "Hello, world!"; int index1 = str.indexOf('o'); // 查找 'o' 的第一次出现
getMessage() − 此方法用于获取异常的错误消息。
errorObject.getMessage()
示例
在示例中,我们创建了一个 URI 对象,并在创建的 URL 对象上使用不同的方法来获取 URL 的不同组件。
import java.net.URI; public class Main{ public static void main(String[] args) { try { URI uri = new URI("https://www.example.com/path/to/file.html?key=value#fragment"); System.out.println("Scheme: " + uri.getScheme()); 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()); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } }
输出
Scheme: https Host: www.example.com Port: -1 Path: /path/to/file.html Query: key=value Fragment: fragment
因此,在本文中,我们讨论了使用 Java 编程语言获取 URL 组件的不同方法。