关于URI和URL

URL和URI之间的区别是什么 URL和URI之间的区别是什么?本篇文章就给大家介绍URL和URI分别是什么?有什么用?让大家了解URL和URI之间的区别,希望对你们有所帮助。 打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新) URL是什么?有什么用? URL(统一资源定位符)是Internet上资源的地址,可以定义为引用地址的字符串,用于指示资源的位置以及用于访问它的协议。 URL是在网络上定位资源的最普遍使用的方式,它提供了一种通过描述其网络位置或主要访问机制来检索物理位置. 阅读详情

这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等。但是,每次定义的时候,心里都很纠结,是该用imgUrl还是imgUri呢?

同样的,另外一个问题:String HttpServletRequest.getRequestURI();和StringBuffer HttpServletRequest.getRequestURL();返回的内容有何不同?为什么会如此?

带着这些问题到网上去搜了下,没发现让自己看了明白的解释,于是,想到了Java类库里有两个对应的类java.net.URI和java.net.URL,终于,在这两个类里的javadoc里找到了答案。

URIs, URLs, and URNs

首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。

在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的,schema必须被指定。

ok,现在回答文章开头提出的问题,到底是imgUrl好呢,还是imgUri好?显然,如果说imgUri是肯定没问题的,因为即使它实际上是url,那它也是uri的一种。那么用imgUrl有没有问题呢?此时则要看它的可能取值,如果是绝对路径,能够定位的,那么用imgUrl是没问题的,而如果是相对路径,那还是不要用ImgUrl的好。总之,用imgUri是肯定没问题的,而用imgUrl则要视实际情况而定。

第二个,从HttpServletRequest的javadoc中可以看出,getRequestURI返回一个String,“the part of this request’s URL from the protocol name up to the query string in the first line of the HTTP request”,比如“POST /some/path.html?a=b HTTP/1.1”,则返回的值为”/some/path.html”。现在可以明白为什么是getRequestURI而不是getRequestURL了,因为此处返回的是相对的路径。而getRequestURL返回一个StringBuffer,“The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters.”,完整的请求资源路径,不包括querystring。

总结一下:URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的。

注:这里的绝对(absolute)是指包含scheme,而相对(relative)则不包含scheme。

URI抽象结构     [scheme:]scheme-specific-part[#fragment]

[scheme:][//authority][path][?query][#fragment]

authority为[user-info@]host[:port]

参考资料:

http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URI.html

http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html

ps:

java.net.URL类不提供对标准RFC2396规定的特殊字符的转义,因此需要调用者自己对URL各组成部分进行encode。而java.net.URI则会提供转义功能。因此The recommended way  to manage the encoding and decoding of URLs is to use  java.net.URI. 可以使用URI.toURL()和URL.toURI()方法来对两个类型的对象互相转换。对于HTML FORM的url encode/decode可以使用java.net.URLEncoder和java.net.URLDecoder来完成,但是对URL对象不适用。

URI、URL和URN的区别解析 在网络开发和信息检索领域,准确地标识和定位资源是非常重要的。为了实现这一目标,出现了URI、URL和URN这些概念。它们在互联网的资源管理和访问中扮演着关键角色,但由于概念相近,容易引起混淆。 阅读详情

相关推荐

HC32F460的GPIO重映射实战:如何用3步搞定SPI引脚冲突问题

本文详细介绍了HC32F460的GPIO重映射功能,通过三步操作解决SPI引脚冲突问题。文章解析了HC32F460的FuncGroup功能分组机制,提供了具体的寄存器配置步骤和验证技巧,并对比了与传统方案的性能优势,帮助工程师灵活配置引脚,优化硬件设计。

t4y5u6i7o的博客 918

基于ADS122U04IPWR与STM32F413RH的工业级RTD高精度温度测量方案

RTD温度测量在工业与HVAC场景中面临宽温区、长引线及强电磁干扰等挑战,其核心在于通过高分辨率ADC与比率测量架构实现微欧级阻值分辨。24位Δ-Σ ADC内置PGA与双匹配激励电流源,配合三线制接法可有效抵消引线电阻,而比率测量技术则消除了激励电流与基准电压的漂移误差。该方案在冷库监控、锅炉采集及HVAC水系统中具备工程落地价值,借助STM32F413RH的浮点运算能力完成线性化与数字滤波,ADS122U04IPWR与STM32F413RH的组合为多路RTD高精度采集提供了稳定可靠的实现路径。

weixin_34302798的博客 576

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1120

URI URL和PATH 的区别

1.URL:Uniform Resource Locator 统一资源定位符 通过URL就可以找到服务器上的特定资源 例如:http://192.168.55.55:8080/logonDemo/logonServlet 服务器ID是192.168.55.55 服务软件端口号8080 2.URI:Uniform Resource Identifier 统一资源标识符 ...

helloGirl 1万+

CMIP6数据处理及在气候变化、水文、生态等领域中的应用

CMIP6、Biome-BGC、生态、气候变化、气象、水文、气候模式、植被、生态模式、遥感、极端气候、降水、WRF模式、动力降尺度、RCM、大气环流模型、贝叶斯模型、、降尺度

PhyliciaFelicia的博客 1550

【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据

使用 LCZ 替换 WRF 运行中的 LUCC 数据

WW、forever的博客 988

Spring居然还提供了这么好用的URL工具类,以前都没发现

1. 前言 开发中我们经常会操作 URL,比如提取端口、提取路径以及最常用的提取参数等等。很多时候需要借助于一些第三方类库或者自己编写工具类来实现,今天胖哥给大家介绍一种方法,无需新的类库引入,只要你使用了 Spring Web 模块都可以轻松来完成对 URL 的组装和分解提取。 2. UriComponents JDK 虽然提供了java.net.URI,但是终归还是不够强大,所以 Spring 封装了一个不可变量的 URI 表示org.springframework.web.util.UriCompon

m0_57286679的博客 1463

【入门AUTOSAR网络管理测试】CANoe测试T_WakeUp时间

随着智能电动汽车行业的快速发展,目前AUTOSAR网络管理也得到了广泛应用,AUTOSAR网络管理测试也是汽车网络测试中非常重要的环节,NM问题导致的汽车ECU不能唤醒、电瓶亏电等问题,对于新入门AUTOSAR网络管理测试的同学不清楚如何开展测试,那么本章节就主要给大家介绍网络管理中T_WakeUp时间如何测试。【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读。

测试领域技术分享 2135

URI与Path的的分析

看到别人的文档有句话一直不能理解于是手动在实践中总结答案             文档是这样说的: [plain] view plaincopy       /**   * 在某些情况设置URLStreamHandlerFactory的方式不一定会生效.   * 在这种情况下,需要用FileSystem来打开一个文件的输入流,   *

lyglostangel的专栏 898

JavaScript实现斗地主(附完整源码)

JavaScript实现斗地主(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1503

LLC电路细讲笔记(二)LLC谐振转换器:频率、增益与Q值的详细探讨

这本电子书通过详细分析LLC谐振转换器的工作原理、等效电路和增益公式,帮助读者深入理解如何设计和优化谐振转换器系统。通过这些公式和设计方法,工程师可以根据不同的应用需求调整参数,实现高效的电能转换。

weixin_43199439的博客 6883

一文搞懂 URI 和 URL

本文主要介绍URI、URL和URN的结构与区别

weixin_46425661的博客 1万+

【数据分析】宏基因组alpha和beta多样性分析和差异物种筛选案例

本教程为读者呈现了宏基因组α和β多样性分析的完整案例。通过实际数据和详细步骤,读者可以深入理解这两种分析方法及其在R语言中的实现过程。教程中不仅提供了清晰的代码示例,还对每一步骤进行了详细解释,使读者能够轻松跟随并掌握分析技巧。无论是初学者还是有一定基础的研究者,都能通过本教程快速上手宏基因组多样性分析,为微生物组学研究提供有力支持。

专注生信领域 2202

URL和URI的区别

URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。 URL = Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protoco...

koflance的博客 8万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

URL和URI的区别及理解

URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。 URL = Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor。 URN = Universal Resource

系统看你学习很认真,随机送了一个月会员! 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

URI和URL的区别与联系

解析URI和URL之间的区别与联系一、URI1.什么是URI2.URI的组成二、URL1.什么是URL2.URL的组成三、URI和URL之间的区别。四、通俗理解 一、URI 1.什么是URI URI:统一资源标识符,表示Web上每一种可用的资源,如HTML文档,图像,视频片段,程序等都是由一个URI进行标识的。 2.URI的组成 通常由三部分组成: (1) 资源的命名机制; (2)存放资源的主机名; (3)资源自身的名称。 注:以上三点是对实例的解释,并不是URI的必要条件,URI只是一种概念,怎样实现无所

weixin_52148548的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java中URI 和 URL 的区别

URI 和 URL 的区别 文章目录URI 和 URL 的区别1. URI2. URL3. 总结 参考文章:https://blog.youkuaiyun.com/zcc7up/article/details/73551250 1. URI 表示一个 统一资源标识符 引用,Uniform Resource Identifiers ① URI 提供一个 toURL() 方法将 URI 转化成一个 URL...

落落free的博客 7714

URL和URI有什么区别?

从一次"面试官追问URL和URI的区别"的尴尬经历出发,深度剖析统一资源标识符的核心概念。通过URL、URI、URN的关系图解、以及RESTful API设计中的URI最佳实践,揭秘为什么URL是URI的子集、URN为什么很少用、以及Spring MVC的@RequestMapping为什么叫URI不叫URL。配合真实案例展示URL的组成部分,给出Web开发中的命名规范。

比较是偷走幸福的小偷 4137

URL和URI

授权信息(authority,可选):权威部分可选,它通常包含访问资源所需的主机名(域名或 IP 地址)和可选的端口号,格式为 用户名:密码@主机名[:端口号]。片段标识符(fragment,可选):有些地方也成Anchor(锚点),片段标识符是可选的,用于标识文档内部的位置或锚点。片段表示符(Fragment):也称锚点(anchor),是URL的可选部分,用于指向资源中的特定部分或位置。可以理解为URL是URI的一个子集,所有的URL都是URI,但不是所有的URI都是URL。

qq_73991712的博客 1053

URL 和 URI 区别

URL 和 URI 区别 本文我们讨论URL 和 URI 的主要区别,并通过示例说明这些差异。 URL 和 URI 直接差异来自其定义: Uniform Resource Identifier (URI) − 对任何抽象或物理资源进行完整标识的字符序列。 Uniform Resource Locator (URL) − 除了标识资源可用的位置之外,URI的一个子集描述了访问该资源的主...

neweastsun的专栏 1万+

什么是URI、URL、URN、URC和Data URI?

前言 不知道大家有没有电话拨号通过'猫'上网的经历,那时测试网络是否连接,最好的方式就是打开浏览器输入: www.baidu.com 那会管这一连串字母叫‘ 网址 ’。之后上大学(计算机专业),知道了这一串字母还有一个名字‘ URL ’。再后来毕业了,找了个IT工作,有的同事又管它叫‘ URI ’。那么到底这一连串字母叫什么呢?URL和URI有时什么关系呢? 通过StackOverf...

A510677208的博客 2724

URL和URI的区别与联系

URL和URI定义: URL(uniform resource locator)是全球资源定位符的英文所写,您平时上网时在IE浏览器中输入的那个地址就是URL。比方:百度 http://www.baidu.com 就是一个URL URI是Web上可用的每种资源 - HTML文档、图像、视频片段、程序,由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行定位。 URL的格式由下列三部分组成: 第一部分是协议(或称为服务方式); 第二部分是存有该资

githubcurry,985cs博士在读 8360

java URL和URI

【README】 本文产生了 URL, URI,以及对应的java类的api; 1.URI,统一资源标识符,标识互联网上的某个网络资源,标识方式如 名称,位置等;就像人的标识一样,可以通过身份证或学生证号或社保号码等来标识;(但不一定靠位置来标识) 2.URL, 统一资源定位符,唯一标识一个资源在internet上的位置(仅靠位置来标识);所以 URL 是 URI标识网络资源的一种方式;即 URI可标识的资源范围比URL大; 3.URL是一种URI ; 【1】URI,统一资源标识符 1)URI采用

PacosonSWJTU的博客 4941

URI和URL

URI,URL,URN 从上面的那幅图可以看出来,一共有三个不同的概念URI,URL,URN。这讨论这样的问题时,最好的方法就是回到原点啊,这里我们在RFC 3986: Uniform Resource Identifier (URI): Generic Syntax里面收集了点资料: “A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象...

suxinhaixp的博客 133
上一篇: nginx实现带参数目录域名重定向二级域名方法
下一篇: TortoiseGit配合msysGit
曲奇小右
博客等级 码龄19年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值