最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中URL的處理方法詳解

 更新時(shí)間:2023年05月12日 08:23:48   作者:無聲編碼器  
URL(Uniform?Resource?Locator)中文名為統(tǒng)一資源定位符,有時(shí)也被俗稱為網(wǎng)頁地址,表示為互聯(lián)網(wǎng)上的資源,本文主要為大家介紹了Java是如何處理URL的,感興趣的可以了解一下

前言

URL(Uniform Resource Locator)中文名為統(tǒng)一資源定位符,有時(shí)也被俗稱為網(wǎng)頁地址。表示為互聯(lián)網(wǎng)上的資源,如網(wǎng)頁或者 FTP 地址。URL 可以分為如下幾個(gè)部分:

protocol://host:port/path?query#fragment

其中 protocol 表示協(xié)議,可以是 HTTP、HTTPS、FTP 和 File;host 表示主機(jī)名;port 表示端口號(hào);path 表示文件路徑及文件名。

一個(gè) Http 協(xié)議的 URL 實(shí)例如下:

http://www.runoob.com/index.html?language=cn#j2se

該 URL 實(shí)例 可以被解析為:

  • 協(xié)議為(protocol):http
  • 主機(jī)為(host:port):www.runoob.com
  • 端口號(hào)為(port): 80 ,以上URL實(shí)例并未指定端口,因?yàn)?HTTP 協(xié)議默認(rèn)的端口號(hào)為 80。
  • 文件路徑為(path):/index.html
  • 請(qǐng)求參數(shù)(query):language=cn
  • 定位位置(fragment):j2se,定位到網(wǎng)頁中 id 屬性為 j2se 的 HTML 元素位置 。

URL 類方法

在java.net包中定義了URL類,該類用來處理有關(guān)URL的內(nèi)容。java.net.URL提供的 URL 構(gòu)建方式如下:

序號(hào)方法描述
1public URL(String protocol, String host, int port, String file) throws MalformedURLException,通過給定的參數(shù)(協(xié)議、主機(jī)名、端口號(hào)、文件名)創(chuàng)建URL
2public URL(String protocol, String host, String file) throws MalformedURLException,使用指定的協(xié)議、主機(jī)名、文件名創(chuàng)建URL,端口使用協(xié)議的默認(rèn)端口
3public URL(String url) throws MalformedURLException,通過給定的URL字符串創(chuàng)建URL
4public URL(URL context, String url) throws MalformedURLException,使用基地址和相對(duì)URL創(chuàng)建

URL類中包含了很多方法用于訪問URL的各個(gè)部分,具體方法及描述如下:

序號(hào)方法描述
1public String getPath(),返回URL路徑部分
2public String getQuery(),返回URL查詢部分
3public String getAuthority(),獲取此 URL 的授權(quán)部分
4public int getPort(),返回URL端口部分
5public int getDefaultPort(),返回協(xié)議的默認(rèn)端口號(hào)
6public String getProtocol(),返回URL的協(xié)議
7public String getHost(),返回URL的主機(jī)
8public String getFile(),返回URL文件名部分
9public String getRef(),獲取此 URL 的錨點(diǎn)(也稱為"引用")
10public URLConnection openConnection() throws IOException,打開一個(gè)URL連接,并運(yùn)行客戶端訪問資源

URLConnections 類方法

URL 的 openConnection() 方法返回一個(gè) java.net.URLConnection,該實(shí)例表示與URL 引用的遠(yuǎn)程對(duì)象的連接。例如:

  • 如果你連接HTTP協(xié)議的URL, openConnection() 方法返回 HttpURLConnection 對(duì)象。
  • 如果你連接的URL為一個(gè) JAR 文件, openConnection() 方法將返回 JarURLConnection 對(duì)象。
  • 等等...

URLConnection 方法列表如下:

序號(hào)方法描述
1Object getContent() ,檢索URL鏈接內(nèi)容
2Object getContent(Class[] classes) ,檢索URL鏈接內(nèi)容
3String getContentEncoding() ,返回頭部 content-encoding 字段值
4int getContentLength() ,返回頭部 content-length字段值
5String getContentType() ,返回頭部 content-type 字段值
6int getLastModified() ,返回頭部 last-modified 字段值
7long getExpiration() ,返回頭部 expires 字段值
8long getIfModifiedSince() ,返回對(duì)象的 ifModifiedSince 字段值
9public void setDoInput(boolean input),URL 連接可用于輸入和/或輸出。如果打算使用 URL 連接進(jìn)行輸入,則將 DoInput 標(biāo)志設(shè)置為 true;如果不打算使用,則設(shè)置為 false。默認(rèn)值為 true
10public void setDoOutput(boolean output),URL 連接可用于輸入和/或輸出。如果打算使用 URL 連接進(jìn)行輸出,則將 DoOutput 標(biāo)志設(shè)置為 true;如果不打算使用,則設(shè)置為 false。默認(rèn)值為 false
11public InputStream getInputStream() throws IOException,返回URL的輸入流,用于讀取資源
12public OutputStream getOutputStream() throws IOException,返回URL的輸出流, 用于寫入資源
13public URL getURL(),返回 URLConnection 對(duì)象連接的URL

方法實(shí)例

獲取URL的各個(gè)部分參數(shù)

public class Test {
    public static void main(String[] args) {
        try
        {
            URL url = new URL("http://www.juejin.cn/index.html?language=cn#j2se");
            System.out.println("URL 為:" + url.toString());
            System.out.println("協(xié)議為:" + url.getProtocol());
            System.out.println("驗(yàn)證信息:" + url.getAuthority());
            System.out.println("文件名及請(qǐng)求參數(shù):" + url.getFile());
            System.out.println("主機(jī)名:" + url.getHost());
            System.out.println("路徑:" + url.getPath());
            System.out.println("端口:" + url.getPort());
            System.out.println("默認(rèn)端口:" + url.getDefaultPort());
            System.out.println("請(qǐng)求參數(shù):" + url.getQuery());
            System.out.println("定位位置:" + url.getRef());
        }catch(IOException e)
        {
            e.printStackTrace();
        }
    }
}

???????// 以上程序執(zhí)行結(jié)果為:
// URL 為:http://www.juejin.cn/index.html?language=cn#j2se
// 協(xié)議為:http
// 驗(yàn)證信息:www.juejin.cn
// 文件名及請(qǐng)求參數(shù):/index.html?language=cn
// 主機(jī)名:www.juejin.cn
// 路徑:/index.html
// 端口:-1
// 默認(rèn)端口:80
// 請(qǐng)求參數(shù):language=cn
// 定位位置:j2se

URL采用了HTTP 協(xié)議時(shí),openConnection 返回HttpURLConnection對(duì)象

public class Test {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://juejin.cn");
            URLConnection urlConnection = url.openConnection();
            HttpURLConnection connection = null;
            if(urlConnection instanceof HttpURLConnection) {
                connection = (HttpURLConnection) urlConnection;
            } else {
                System.out.println("請(qǐng)輸入 URL 地址");
                return;
            }
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(connection.getInputStream()));
            String urlString = "";
            String current;
            while((current = in.readLine()) != null) {
                urlString += current;
            }
            System.out.println(urlString);
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
}

// 以上程序執(zhí)行結(jié)果為:
// <!doctype html><html data-n-head-ssr lang="zh" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22zh%22%7D%7D">  <head >    <title>稀土掘金</title>...

獲取遠(yuǎn)程文件大小

public class Test {
    public static void main(String[] args) throws Exception {
        int size;
        URL url = new URL("https://juejin.cn");
        // 獲取 URLConnection 實(shí)例
        URLConnection conn = url.openConnection();
        // 獲取頭部 content-length 字段值
        size = conn.getContentLength();
        if (size < 0)
            System.out.println("無法獲取文件大小。");
        else {
            System.out.println("文件大小為:" + size + " bytes");
        }
        // 關(guān)閉輸入流
        conn.getInputStream().close();
    }
}

???????// 以上程序執(zhí)行結(jié)果為:
// 文件大小為:84127 bytes

網(wǎng)頁抓取

public class Test {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://juejin.cn");
        // 打開一個(gè)到此 URL 的連接,并返回一個(gè) InputStream,將 InputStream 轉(zhuǎn)為緩沖字符輸入流
        BufferedReader reader = new BufferedReader
                (new InputStreamReader(url.openStream()));
        // 創(chuàng)建指定文件的字符輸出流
        BufferedWriter writer = new BufferedWriter
                (new FileWriter("data.html"));
        String line;
        // 將讀取內(nèi)容寫入文件
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
            writer.write(line);
            writer.newLine();
        }
        // 關(guān)閉流
        reader.close();
        writer.close();
    }
}
???????// 以上程序執(zhí)行結(jié)果為:
// 網(wǎng)頁的源代碼,存儲(chǔ)在當(dāng)前目錄下的 data.html 文件中

獲取 URL 響應(yīng)頭的日期信息

public class Test {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://juejin.cn");
        HttpURLConnection httpCon =
                (HttpURLConnection) url.openConnection();
        // 獲取頭部日期字段的值
        long date = httpCon.getDate();
        if (date == 0) {
            System.out.println("無法獲取信息。");
        } else {
            System.out.println("Date: " + new Date(date));
        }
    }
}

// 以上程序執(zhí)行結(jié)果為:
// Date: Thu May 11 22:32:04 CST 2023

獲取 URL 響應(yīng)頭信息

public class Test {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.runoob.com");
        URLConnection conn = url.openConnection();
        // 獲取頭部字段的不可修改映射
        Map headers = conn.getHeaderFields();
        // 遍歷頭部字段映射鍵值
        Set<String> keys = headers.keySet();
        for( String key : keys ){
            String val = conn.getHeaderField(key);
            System.out.println(key+"    "+val);
        }
        System.out.println( conn.getLastModified() );
    }
}

???????// 以上程序執(zhí)行結(jié)果為:
// null    HTTP/1.1 302 Moved Temporarily
// X-Cache-Status    MISS
// Server    JSP3/2.0.14
// Connection    keep-alive
// Content-Length    144
// Date    Thu, 11 May 2023 14:37:51 GMT
// Location    https://www.runoob.com/
// Content-Type    text/html
// 0

查看主機(jī)指定文件的最后修改時(shí)間

public class Test {
    public static void main(String[] args) throws Exception {
        URL u = new URL("https://static.runoob.com/assets/upvotejs/dist/upvotejs/upvotejs.vanilla.js");
        URLConnection uc = u.openConnection();
        SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
        // 將此 URLConnection 的 useCaches 字段的值設(shè)置為 false 以忽略緩存
        uc.setUseCaches(false);
        // 獲取文件最后修改時(shí)間
        long timestamp = uc.getLastModified();
        System.out.println("vanilla.js 文件最后修改時(shí)間 :" + ft.format(new Date(timestamp)));
    }
}
// 以上程序執(zhí)行結(jié)果為:
// vanilla.js 文件最后修改時(shí)間 :2019-08-01 06:23:35

到此這篇關(guān)于Java中URL的處理方法詳解的文章就介紹到這了,更多相關(guān)Java URL處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • idea插件之如何使用JarEditor編輯Java JAR文件

    idea插件之如何使用JarEditor編輯Java JAR文件

    JarEditor是一款用于在IntelliJIDEA中直接編輯JAR文件的插件,支持反編譯查看和編輯.class文件,并提供即時(shí)編譯與保存功能,通過JarEditor,用戶可以在IDE內(nèi)一站式完成JAR文件的編輯、管理和打包操作,提高開發(fā)效率,但在生產(chǎn)環(huán)境中使用前,請(qǐng)確保備份并測試修改
    2025-01-01
  • Java開發(fā)druid數(shù)據(jù)連接池maven方式簡易配置流程示例

    Java開發(fā)druid數(shù)據(jù)連接池maven方式簡易配置流程示例

    本篇文章主要為大家介紹了java開發(fā)中druid數(shù)據(jù)連接池maven方式的簡易配置流程示例,文中附含詳細(xì)的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 最簡單的spring boot打包docker鏡像的實(shí)現(xiàn)

    最簡單的spring boot打包docker鏡像的實(shí)現(xiàn)

    這篇文章主要介紹了最簡單的spring boot打包docker鏡像的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java的GUI編程之列表和組合框的設(shè)計(jì)使用

    Java的GUI編程之列表和組合框的設(shè)計(jì)使用

    這篇文章主要介紹了Java的GUI編程之列表和組合框的設(shè)計(jì)使用,是Java圖形界面編程中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • springcloud 中 zuul 修改請(qǐng)求參數(shù)信息的方法

    springcloud 中 zuul 修改請(qǐng)求參數(shù)信息的方法

    這篇文章主要介紹了springcloud 中 zuul 修改請(qǐng)求參數(shù)信息的方法,需要的朋友可以參考下
    2018-02-02
  • Java中的main方法調(diào)用非靜態(tài)方法處理

    Java中的main方法調(diào)用非靜態(tài)方法處理

    這篇文章主要介紹了Java中的main方法調(diào)用非靜態(tài)方法處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java用類加載器的5種方式讀取.properties文件

    java用類加載器的5種方式讀取.properties文件

    這篇文章主要介紹了java用類加載器的5種方式讀取.properties文件,詳細(xì)的介紹了這5種方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • struts1之ActionServlet詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    struts1之ActionServlet詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了struts1之ActionServlet詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例

    SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例

    數(shù)據(jù)脫敏主要應(yīng)用在客戶安全數(shù)據(jù)或商業(yè)性敏感數(shù)據(jù)的情況,本文主要介紹了SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • nacos(SpringCloud)配置加載過程

    nacos(SpringCloud)配置加載過程

    Nacos是Spring Cloud的配置中心,通過BootstrapApplicationListener和ConfigFileApplicationListener監(jiān)聽器加載配置文件,并通過PropertySourceBootstrapConfiguration將Nacos配置加載到Spring Boot應(yīng)用的environment中
    2024-12-12

最新評(píng)論

莱西市| 全南县| 千阳县| 峡江县| 罗田县| 桑植县| 桦南县| 甘泉县| 德庆县| 盐源县| 武川县| 浦江县| 晋宁县| 勃利县| 万安县| 德惠市| 安龙县| 祁连县| 张掖市| 河西区| 丽江市| 台前县| 东海县| 隆昌县| 团风县| 元谋县| 调兵山市| 绵竹市| 八宿县| 汪清县| 永福县| 英吉沙县| 汕尾市| 富锦市| 清流县| 黎川县| 织金县| 潮州市| 甘孜县| 吉木乃县| 峡江县|