码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)


    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
    https://blog.csdn.net/m0_69908381/article/details/134024288
    出自【进步*于辰的博客】

    此类表示“统一资源定位符”,有一个很相似的类:URI。
    推荐一篇博文《一文带你理解URI 和 URL 有什么区别?》(转发)。

    文章目录

    • 1、概述
    • 2、构造方法摘要
      • 2.1 String spec
      • 2.2 String protocol, String host, int port, String file
      • 2.3 String protocol, String host, int port, String file, URLStreamHandler handler
      • 2.4 String protocol, String host, String file
      • 2.5 URL context, String spec
      • 2.6 URL context, String spec, URLStreamHandler handler
    • 3、方法摘要
      • 3.1 boolean equals(Object obj)
      • 3.2 String getAuthority()
      • 3.3 Object getContent()
      • 3.4 Object getContent(Class[] classes)
      • 3.5 int getDefaultPort()
      • 3.6 String getFile()
      • 3.7 String getHost()
      • 3.8 String getPath()
      • 3.9 int getPort()
      • 3.10 String getProtocol()
      • 3.11 String getQuery()
      • 3.12 String getRef()
      • 3.13 String getUserInfo()
      • 3.14 int hashCode()
      • 3.15 URLConnection openConnection()
      • 3.16 URLConnection openConnection(Proxy proxy)
      • 3.17 InputStream openStream()
      • 3.18 boolean sameFile(URL other)
      • 3.19 protected void set(String protocol, String host, int port, String file, String ref)
      • 3.20 protected void set(String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref)
      • 3.21 static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
      • 3.22 String toExternalForm()
      • 3.23 String toString()
      • 3.24 URI toURI()
    • 最后

    1、概述

    继承关系:

    • java.lang.Object
      • java.net.URL

    所有已实现的接口:
    Serializable


    public final class URL extends Object implements Serializable

    类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。有关 URL 的类型和格式的更多信息,可从以下位置找到:

    • http://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Demo/url-primer.html

    通常,URL 可分成几个部分。上面的 URL 示例指示使用的协议为 http (超文本传输协议)并且该信息驻留在一台名为 www.ncsa.uiuc.edu 的主机上。主机上的信息名称为 /SDG/Software/Mosaic/Demo/url-primer.html。主机上此名称的准确含义取决于协议和主机。该信息一般存储在文件中,但可以随时生成。该 URL 的这一部分称为 路径部分 \color{green}{路径部分} 路径部分。

    URL 可选择指定一个“端口”,它是用于建立到远程主机 TCP 连接的端口号。如果未指定该端口号,则使用协议默认的端口。例如,http 协议的默认端口为 80。还可以指定一个备用端口,如下所示:

    http://archive.ncsa.uiuc.edu:80/SDG/Software/Mosaic/Demo/url-primer.html
    
    • 1

    URL 的语法由此文档定义:RFC 2396:Uniform Resource Identifiers (URI):Generic Syntax;在此文件中对其内容又进行了修正:RFC 2732:Format for Literal IPv6 Addresses in URLs。字面值 IPv6 地址格式还支持 scope_id。scope_id 的语法和用法在此处进行了描述。

    URL 后面可能还跟有一个“片段”,也称为“引用”。该片段由井字符 “#” 指示,后面跟有更多的字符。例如,

    http://java.sun.com/index.html#chapter1
    
    • 1

    从技术角度来讲,URL 并不需要包含此片段。但是,使用此片段的目的在于表明,在检索到指定的资源后,应用程序需要使用文档中附加有 chapter1 标记的部分。标记的含义特定于资源。

    应用程序也可以指定一个“ 相对 U R L 相对 URL 相对URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL。例如,假设 URL 的内容是:

    http://java.sun.com/index.html
    
    • 1

    其中包含的相对 URL:

    FAQ.html
    
    • 1

    为以下形式的缩写:

    http://java.sun.com/FAQ.html
    
    • 1

    相对 URL 不需要指定 URL 的所有组成部分。如果缺少协议、主机名称或端口号,这些值将从完整指定的 URL 中继承。但是,必须指定文件部分。可选的片段部分不继承。

    URL 类自身并不根据 R F C 2396 \color{blue}{RFC2396} RFC2396 中定义的转义机制编码或解码任何 URL 部分。由调用方对任何需要在调用 URL 前进行转义的字段进行编码,并对从 URL 返回的任何经过转义的字段进行解码。进一步而言,由于 URL 不懂 URL 转义,所以它不会识别同一 URL 的对等编码和解码形式。例如,对于这两个 URL:

    http://foo.com/hello world/
    和
    http://foo.com/hello%20world
    
    • 1
    • 2
    • 3

    将被视为互不相等。

    注意: \color{red}{注意:} 注意:URI 类在某些特定情况下对其组成字段执行转义。建议使用 URI 管理 URL 的编码和解码,并使用 toURI() 和 URI.toURL() 实现这两个类之间的转换。

    也可以使用 URLEncoder 和 URLDecoder 类,但是只适用于 HTML 形式的编码,它与 RFC2396 中定义的编码机制不同。

    从以下版本开始:
    JDK1.0
    另请参见:
    序列化表格

    2、构造方法摘要

    2.1 String spec

    根据 String 表示形式创建 URL 对象。

    2.2 String protocol, String host, int port, String file

    根据指定协议、主机名、端口号和file创建 URL 对象。

    2.3 String protocol, String host, int port, String file, URLStreamHandler handler

    根据指定协议、主机名、端口号、file和 handler 创建 URL 对象。

    2.4 String protocol, String host, String file

    根据指定协议、主机名和file创建 URL 对象。

    2.5 URL context, String spec

    通过在指定的上下文中对给定的 spec 进行解析创建 URL对象。

    2.6 URL context, String spec, URLStreamHandler handler

    通过在指定的上下文中用指定的处理程序对给定的 spec 进行解析来创建 URL 对象。

    3、方法摘要

    3.1 boolean equals(Object obj)

    比较此 URL 是否等于另一个对象。

    3.2 String getAuthority()

    获得此 URL 的授权部分。

    3.3 Object getContent()

    获得此 URL 的内容。

    3.4 Object getContent(Class[] classes)

    获得此 URL 的内容。

    3.5 int getDefaultPort()

    获得与此 URL 关联协议的默认端口号。

    3.6 String getFile()

    获得此 URL 的文件名。

    3.7 String getHost()

    获得此 URL 的主机名(如果适用)。

    3.8 String getPath()

    获得此 URL 的路径部分。

    3.9 int getPort()

    获得此 URL 的端口号。

    3.10 String getProtocol()

    获得此 URL 的协议名称。

    3.11 String getQuery()

    获得此 URL 的查询部分。

    3.12 String getRef()

    获得此 URL 的锚点(也称为“引用”)。

    3.13 String getUserInfo()

    获得此 URL 的 userInfo 部分。

    3.14 int hashCode()

    创建一个适合哈希表索引的整数。

    3.15 URLConnection openConnection()

    返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。

    3.16 URLConnection openConnection(Proxy proxy)

    与 openConnection() 类似,所不同是连接通过指定的代理建立;不支持代理方式的协议处理程序将忽略该代理参数并建立正常的连接。

    3.17 InputStream openStream()

    打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

    3.18 boolean sameFile(URL other)

    比较两个 URL,不包括片段部分。

    3.19 protected void set(String protocol, String host, int port, String file, String ref)

    设置 URL 的字段。

    3.20 protected void set(String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref)

    设置 URL 的指定的 8 个字段。

    3.21 static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)

    设置应用程序的 URLStreamHandlerFactory。

    3.22 String toExternalForm()

    构造此 URL 的字符串表示形式。

    3.23 String toString()

    构造此 URL 的字符串表示形式。

    3.24 URI toURI()

    返回与此 URL 等效的 URI。

    最后

    如果大家需要Java-API文档,我上传了《Java-API文档-包含5/8/11三个版本》。


    本文暂缓更新。

  • 相关阅读:
    Python对象循环引用垃圾回收算法
    [管理与领导-108]:IT人看清职场中的隐性规则 - 5 - 你会在不经意间被归属在不同的分类中,一旦分类定型,你就会被打上了某种标签(职场分类方法大全)
    Redis的java客户端-RedisTemplate光速入门
    思科模拟器的远程连接交换机的实现
    web前端大一实训 HTML+CSS+JavaScript王者荣耀(60页) web课程设计网页规划与设计 HTML期末大作业 HTML网页设计结课作业
    CLIP改进工作串讲(上)
    基于 ARM+FPGA+AD平台的多类型同步信号采集仪开发及试验验证(一)
    解决Java应用程序中的SQLException:服务器时区值未识别问题;MySQL连接问题:服务器时区值 ‘Öйú±ê׼ʱ¼ä‘ 未被识别的解决方法
    摄影构图:人像摄影和风景摄影的一些建议
    国内饮料行业数据浅析
  • 原文地址:https://blog.csdn.net/m0_69908381/article/details/134024288
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号