当前位置: 首页 > news >正文

Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)

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

因为我发现目前,我对Java-API的学习意识比较薄弱,需要慢慢习惯使用Java-API,乃至剖析源码来提升自己的源码阅读能力和编码素质。
大家如果需要Java-API文档,我上传了【https://download.csdn.net/download/m0_69908381/87691693】。

此类表示 统一资源定位符 \color{green}{统一资源定位符} 统一资源定位符,有一个很相似的类: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

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

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

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

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

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

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

其中包含的相对 URL:

FAQ.html

为以下形式的缩写:

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

相对 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

将被视为互不相等。

注意: \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

根据指定协议、主机名、端口号、filehandler 创建 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。


本文暂缓更新。

相关文章:

  • 牛客网刷题-(7)
  • C++——基于多态的职工管理系统
  • 业务架构、应用架构、技术架构、数据架构
  • Unity性能优化一本通
  • 聊一下Glove
  • Makefile泛谈
  • 归结原理、归结演绎推理
  • 列表自动向上滚动
  • matlab中类的分别之handle类和value类——matlab无法修改类属性值的可能原因
  • 【黑马程序员】mysql基础篇笔记
  • unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家
  • 什么?Postman也能测WebSocket接口了?
  • Java开发面试--MongoDB专区
  • 【C++基础入门】43.C++中多态的概念和意义
  • msigdbr hallmarks gsea broad研究所
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • android图片蒙层
  • AngularJS指令开发(1)——参数详解
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • JavaScript异步流程控制的前世今生
  • laravel5.5 视图共享数据
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 译有关态射的一切
  • 用element的upload组件实现多图片上传和压缩
  • 阿里云ACE认证学习知识点梳理
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (day6) 319. 灯泡开关
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (转)关于多人操作数据的处理策略
  • .net core 连接数据库,通过数据库生成Modell
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET程序员迈向卓越的必由之路
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .net中应用SQL缓存(实例使用)
  • /proc/vmstat 详解
  • /var/lib/dpkg/lock 锁定问题
  • @property python知乎_Python3基础之:property
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [20190113]四校联考
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [C#] 我的log4net使用手册
  • [C++]类和对象【上篇】
  • [DM复习]关联规则挖掘(下)
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [go] 迭代器模式
  • [java进阶]——方法引用改写Lambda表达式