📅  最后修改于: 2023-12-03 15:27:48.454000             🧑  作者: Mango
在我们编写 Java Web 应用程序时,有时候需要获取指定 URL 的某些组件,比如获取参数、主机名等。下面是一些获取 URL 组件的 Java 程序示例。
获取 URL 参数通常是我们最常用的场景之一,例如从 HTTP GET 请求中获取参数。
// 取得指定 URL 中的参数
public static Map<String, String> getQueryParams(String url) {
try {
URL u = new URL(url);
Map<String, String> queryPairs = new LinkedHashMap<String, String>();
String[] pairs = u.getQuery().split("&");
for (String pair : pairs) {
int idx = pair.indexOf("=");
queryPairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
}
return queryPairs;
} catch (MalformedURLException e) {
return null;
}
}
示例调用:
String url = "https://example.com/search?q=java+example&oq=java+example&aqs=chrome.0.69i59j0l2j46j0l2j69i60l2.1370j0j7&sourceid=chrome&ie=UTF-8";
Map<String, String> params = getQueryParams(url);
System.out.println(params.get("q")); // 输出:java example
获取 URL 主机名通常也是我们比较常用的场景之一,用于确定请求是向哪个主机发出的。
// 获取指定 URL 的主机名
public static String getHostName(String url) {
try {
URI uri = new URI(url);
return uri.getHost();
} catch (URISyntaxException e) {
return null;
}
}
示例调用:
String url = "https://example.com/search?q=java+example&oq=java+example&aqs=chrome.0.69i59j0l2j46j0l2j69i60l2.1370j0j7&sourceid=chrome&ie=UTF-8";
String hostName = getHostName(url);
System.out.println(hostName); // 输出:example.com
获取 URL 文件路径通常也是我们比较常用的场景之一,用于确定请求获取的是哪个文件。
// 获取指定 URL 的文件路径
public static String getFilePath(String url) {
try {
URI uri = new URI(url);
return uri.getPath();
} catch (URISyntaxException e) {
return null;
}
}
示例调用:
String url = "https://example.com/path/to/file.html";
String filePath = getFilePath(url);
System.out.println(filePath); // 输出:/path/to/file.html
获取完整的 URL 可能比较简单,但也比较常用。示例代码如下:
// 获取指定 URL 的完整 URL
public static String getFullUrl(String url) {
try {
URI uri = new URI(url);
return uri.toString();
} catch (URISyntaxException e) {
return null;
}
}
示例调用:
String url = "https://example.com";
String fullUrl = getFullUrl(url);
System.out.println(fullUrl); // 输出:https://example.com