java - 为什么 URL 构造函数不允许相对 URL?
问题描述
URL 构造函数不允许丢失或未知协议。
但这不支持广泛使用的相对 URL,例如
- 根相对 URL
<img src="/images/pic.png>
- 页面/基本相对 URL
<img src="images/pic.png>
为什么 URL 构造函数会java.net.MalformedURLException: no protocol
在这些非常常见的情况下抛出?
URI 构造函数支持这样的相对 URL。
顺便说一句,说“相对 URI”而不是“相对 URL”是否正确?因为互联网上 99% 的所有链接都是“相对 URL”,而不是“相对 URI”
解决方案
为什么
URL
构造函数抛出java.net.MalformedURLException
:在这些非常常见的情况下没有协议?
因为这些不是有效的 URL。
URI 构造函数支持这样的相对 URL。
不正确。它允许相对URI。
顺便说一句,说“相对 URI”而不是“相对 URL”是否正确?因为互联网上 99% 的所有链接都是“相对 URL”,而不是“相对 URI”。
不,这是不正确的1。
URI 和 URL 的规范清楚地表明“相对 URL”不是有效的术语。见https://www.rfc-editor.org/rfc/rfc3986
Java API 的设计者(明智URI
地URL
选择 IMO)正确使用术语;即根据各自的规范。这就是URL
构造函数不接受相对URI字符串作为参数的原因。
1 - 将蚂蚁称为“虫子”并不正确。真正的虫子是半翅目,它是昆虫纲(昆虫)的一个目,其特点是有吸嘴部分。蚂蚁是膜翅目的成员。正如维基百科所说:“许多通常被称为“虫子”的昆虫属于其他目;例如,爱情虫是苍蝇,而五月虫和瓢虫是甲虫。 (见维基百科)我的观点?如果 Java 设计者滥用 URL / URI 的区别,他们将与生物学家在科学论文中将蚂蚁称为“虫子”一样糟糕。
推荐阅读
- c - 使用 scanf() 中的格式说明符在 C 中输入
- ethereum - 创建新的 ERC-777 时如何定义运算符?
- javascript - 如何根据jquery中的术语选择计算到期日
- c - 显示“队列”的内容不起作用
- python - Python 中 NumPy.dot() 和 '*' 操作的区别
- c++ - LRU 缓存,能够快速返回缓存中元素的位置
- javascript - 反应按钮组件在输出屏幕上不可见,但在检查模式下显示
- python - Python traceback 异常堆栈序列化为字典或列表
- java - 在硒中读取excel文件时获取NegativeArrayExcetion
- html - 轮播指示器不可点击