刚开始学Java不太理解URL和URI的内容,在网上查阅资料后这里贴贴整理一些大佬的总结


文章目录

  • URL类
  • URL语法
  • URI类
  • URI语法
  • URI和URL的区别
  • uri和url的关系
  • 有什么作用?
  • url的作用
  • uri的作用


URL类

URL可以唯一地标识一个资源在 Internet 上的位置。

URL类是 Java 程序在网络上定位和获取数据的最简单的方法。URL除了标识一个资源,还会为资源提供一个特定的网络位置,客户端可以用来获取这个资源的一个表示。而URI,只能告诉你一个资源是什么,但是无法告诉你它在那里,以及如何得到这个资源。

URL语法

URL语法为:protocol://userInfo@host:port/path?query#fragment

  • 协议部分:file,ftp,http,https,magnet,telnet
  • 用户信息:服务器登录信息
  • 用户信息,主机,端口在一起构成权威机构
  • 查询字符串向服务器提供附加参数。一般只在http URL中使用,包含表单数据,作为输入提供给在这个服务器上运行的程序。
  • 片段:指向远程资源的某个特定部分。片段标识符目标在HTML文档中用Id属性创建。

URI类

统一资源标识符采用特定语法标识一个资源的字符串。资源是由URI标识的内容,URI是标识一个资源的字符串。

URI语法

URI的语法由一个模式和一个模式特定组成部分组成,用冒号分隔。如
模式:模式特定部分
模式包括:data,file,ftp,http,mailto,magnet,telnet,urn
模式特定部分无特定语法,很多采用层次结构形式如://authority/path?query

URI和URL的区别

URI是对URL的抽象。java.net.URI与java.net.URL类的区别:

URI类完全有关于资源的标识和URI的解析,没有提供方法来获取URI所标识资源的表示
相比URL类,URI类与相关的规范更一致
URI对象可以表示相对URI,URL类在存储URI之前会将其绝对化
一句话,URL对象是对应网络获取的应用层协议的一个表示,而URI对象纯粹用于解析和处理字符串。

uri和url的关系

uri是url的父级,url是uri的子级。
可能有人就奇怪了,咦?明明是url包含了uri为啥uri反而是父级?
请注意,我这里用的是级别来描述,而不是包含。
我没有说url是uri的一部分,而是说是他的子级。
想要理解这个概念,最好的说明就是java的继承关系。url继承了uri。这样来看是不是瞬间就明白了。
因为url继承了所有uri的内容,所以它比uri更加详细,但是uri是它的父级。

有什么作用?

url的作用

url一般是一个完整的链接,我们可以直接通过这个链接(url)访问到一个网站,或者把这个url复制到浏览器访问网站。
使用URL时我们就是一个直接用户的角色,直接访问就完事了。

uri的作用

uri并不是一个直接访问的链接,而是相对地址(当然如果相对于浏览器那么uri等同于url了)。这种概念更多的是用于编程中,因为我们没必要每次编程都用绝对url来获取一些页面,这样还需要进行分割“http://xx/xxx”前面那一串,所以编程的时候直接request.getRequestURI就行了,当然如果是重定向的话,就用URL。

本文摘抄自:
uri和url的区别与联系(一看就理解)URL和URI