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。


本文暂缓更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶,从“宠儿”走进“淘汰赛”

从“一步到位”到场景、技术降维。从拼落地路径,到拼雷达、算力,再到如今的性价比之争,自动驾驶似乎变得愈发“接地气”。 作者|斗斗 编辑|皮爷 出品|产业家 比起去年,黄文欢和张放今年显得更加忙碌。 “自动驾驶赛道&…

windows下-mysql环境配置,以及使用navicat可视化数据库,便捷撰写sql语句。

文章目录 MySQL 连接到本地MySQL 下载MySQL连接基本SQL操作语句创建并查看数据库删除数据库修改数据库插入、删除、修改数据 图形化界面展示数据库 Navicat 基础操作连接本地的mysql数据库撰写sql语句 MySQL 连接到本地 MySQL 下载 直接系统自带应用商城下载,安装最…

MySQL 多表查询 事务 索引

目录 多表查询简介内连接查询 join on外连接查询 left join、right join子连接查询标量子查询列子查询 (in、not in)行子查询表子查询 多表查询案例 事务事务介绍操作 start transaction、commit、rollback事务四大特性(面试题) 索引索引介绍索引原理索引语法 index 上次学习了…

【高阶数据结构】并查集和图

目录 1.数据结构--并查集 2.数据结构--图 1.图的基础概念 2.图的简单实现 2.1.邻接矩阵的图实现 2.2.邻接表的图实现 2.3.图的DFS和BFS 2.4.最小生成树 2.4.1.Kruskal(克鲁斯卡尔算法) 2.4.2.Prim(普里姆算法) 2.5.最短路径 2.5.1.Dijkstra(…

soc的复位reset/rst问题

本节不去讨论同步复位与异步复位以及异步复位的reset_release,这些问题可参考:芯片设计进阶之路——Reset深入理解——cy413026 本机主要回答一下几个问题。 1.片外的reset信号特别是按键reset怎么防止错误抖动的影响? 常见的处理方法包括两…

大数据-Storm流式框架(三)--Storm搭建教程

一、两种搭建方式 1、storm单节点搭建 2、完全分布式搭建 二、storm单节点搭建 准备 下载地址:Index of /dist/storm 1、环境准备: Java 6 Python 2.6.6 2、上传、解压安装包 3、在storm目录中创建logs目录 mkdir logs 启动 ./storm help …

【Docker 内核详解】cgroups 资源限制(一):概念、作用、术语

cgroups 资源限制(一):概念、作用、术语 1.cgroups 是什么2.cgroups 的作用3.cgroups 术语表 当谈论 Docker 时,常常会聊到 Docker 的实现方式。很多开发者都知道,Docker 容器本质上是宿主机上的进程(容器所…

解决cloudflare pages部署静态页面发生404错误的问题

cloudflare pages是一个非常方便的部署静态页面的sass工具。 但是很多人部署上去以后,访问服务会报404错误。什么原因? 原因如下图所示: 注意这个Build output directory, 这个是部署的关键! 这个Build output directory目录的…

ETL工具Kettle

1 Kettle的基本概念 一个数据抽取过程,主要包括创建一个作业(Job),每个作业由一个或多个作业项(Job Entry)和连接作业项的作业跳(Job Hop)组成。每个作业项可以是一个转换&#xff…

vue如何使用路由拦截器

在 Vue 中使用路由拦截器需要使用 Vue Router 提供的 beforeEach 方法。beforeEach 方法会在每个路由切换前,对路由进行拦截处理。可以在这个方法中进行一些验证或者权限认证,如果满足条件则继续跳转,否则取消跳转并进行相应处理。 下面是一…

TSINGSEE青犀基于AI视频识别技术的平安校园安防视频监控方案

一、背景需求 因学校频频出治安事件,所以必须要加强学校的安防工作,目前来看,大部分校园都建设了视频监控来预防保障校园安全。但是传统的视频监控系统,主要通过设备来录像以及人员时时监控来进行。这种监管方式效率十分低下&…

使用canal实现数据实时同步

canal canal [kə’nl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger…

linux安装gitlab-runner最新保姆级教程

安装 安装教程来自gitlab官网,本文仅演示CentOS系统下安装gitlab-runner 自动安装 1.添加gitlab官方存储库 curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash也可以配置yum源安装 vim /…

Android Studio编译旧的app代码错误及解决方法

‘android.injected.build.density’ is deprecated. The option ‘android.injected.build.density’ is deprecated. It was removed in version 8.0 of the Android Gradle plugin. Density property injection from Android Studio has been removed. 解决 app/build.gr…

【API篇】八、Flink窗口函数

文章目录 1、增量聚合之ReduceFunction2、增量聚合之AggregateFunction3、全窗口函数full window functions4、增量聚合函数搭配全窗口函数5、会话窗口动态获取间隔值6、触发器和移除器7、补充 //窗口操作 stream.keyBy(<key selector>).window(<window assigner>)…

lesson2(补充)关于const成员函数

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 将const 修饰的 “ 成员函数 ” 称之为 const 成员函数 &#xff0c; const 修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的 this 指针 &#xff0c;表明在该成员函数中不能对类的任何成员进行修改…

Vue+ElementUI项目打包部署到Ubuntu服务器中

1、修改config/index.js中的assetsPublicPath: /,修改为assetsPublicPath: ./ assetsPublicPath: ./2、在build/utils.js中增加publicPath: ../../ publicPath: ../../3、打开终端&#xff0c;在根目录下执行npm run build进行打包&#xff0c;打包成功后会生成dist npm run…

从lc560“和为 K 的子数组“带你认识“前缀和+哈希表“的解题思路

1 前缀和哈希表解题的几道题目&#xff1a;建议集中练习 560. 和为 K 的子数组&#xff1a;https://leetcode.cn/problems/subarray-sum-equals-k/ 1248. 统计「优美子数组」: https://leetcode.cn/problems/count-number-of-nice-subarrays/ 1249. 和可被 K 整除的子数组(利用…

037-第三代软件开发-系统音量设置

第三代软件开发-系统音量设置 文章目录 第三代软件开发-系统音量设置项目介绍系统音量设置QML 实现C 实现 总结一下 关键字&#xff1a; Qt、 Qml、 volume、 声音、 GPT 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Obj…

听GPT 讲Rust源代码--library/std(8)

题图来自Why is Rust programming language so popular?[1] File: rust/library/std/src/sys/sgx/abi/reloc.rs 在Rust源代码中&#xff0c;sgx/abi/reloc.rs文件的作用是定义了针对Intel Software Guard Extensions (SGX)的重定位相关结构和函数。 该文件中的Rela 结构定义了…