URI和URL的区别

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

URI和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对象不适用。

URL、URN 、URI的区别和联系 最近做域名相关实验,发现一个很有意思的问题。URL、URI,很可能还有URN,它们之间的区别和联系是什么。虽然,现在我们简单地把 URN 和 URL 都看做 URI,但严格来说URI可以进一步划分为URL、URN或者这两者的组合,所以了解这三者之间的区别将会非常有趣并让人受益匪浅。如果你恰好在某个地方碰到了这些东西,那么至少应该知道它们的含义。 我认为,尽管对一般人来说,不了解这三个缩略词之 阅读详情

相关推荐

10X Visium空间转录组学入门:从芯片结构到数据分析全流程解析(附避坑指南)

本文全面解析10X Visium空间转录组学技术,从芯片物理结构、探针化学原理到湿实验全流程操作与避坑指南,并详细介绍了从FASTQ数据到空间可视化的核心分析流程。文章旨在帮助科研人员跨越从理论到实操的鸿沟,掌握从样本准备、文库构建到使用Space Ranger和Seurat进行数据分析与可视化的完整路径,为组织生物学研究提供清晰的实践指引。

weixin_29306011的博客 163

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

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

weixin_34302798的博客 576

计数译码驱动显示电路实验报告_京东方G0A电路、阵列基板、显示 装置及驱动方法广州威彩...

图1、实施例二所述的选择子单元的结构示意图图2、实施例四所述的GOA电路结构示意图图3、实施例七所述的阵列基板的局部结构示意图图4、实施例所述的极性反转驱动方法的第一场的各信号时序图图5、实施例所述的极性反转驱动方法的第二场的各信号时序图图6、实施例所述的极性反转驱动方法的第三场的各信号时序图图7、实施例所述的极性反转驱动方法的第四场的各信号时序图图8、为图4所示时序下,实施例八所述显示...

weixin_35696112的博客 925

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万+

Kaggle时间序列竞赛金牌方案解析与实战指南

本文深度解析了Kaggle时间序列竞赛的金牌方案,揭示了其成功不仅依赖先进模型,更在于系统工程思维。文章系统阐述了从数据理解、特征工程到模型集成与后处理的全流程,并重点剖析了分层建模、自定义损失函数、时序交叉验证等核心技巧,为参赛者提供了从理论到实战的完整指南。

weixin_29196315的博客 357

vscode运行.ipynb代码时提示需要安装ipykernel包的解决办法

此文目的是为了记录遇到的一些问题,也希望能帮助到和我一样遇到困难的同学。如需转载,请注明出处。在使用vscode运行.ipynb文件中提示需要安装ipykernel包的提示,在网上查询了很多方法之后也是终于解决了问题。写下这篇博客也希望能帮到大家。

qq_58018041的博客 4万+

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

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

m0_57286679的博客 1463

别再死记硬背Payload了!深入理解Flask/Jinja2 SSTI的Python对象继承链与魔术方法

本文深入解析Flask/Jinja2 SSTI漏洞的底层原理,从Python对象模型出发,详细讲解如何通过魔术方法链实现RCE。文章揭示了Python对象继承链与魔术方法的精妙设计,提供了防御与绕过SSTI漏洞的实用技巧,帮助开发者深入理解漏洞本质并采取有效防护措施。

weixin_42525738的博客 356

URI与Path的的分析

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

lyglostangel的专栏 898

SpringBoot3 + OAuth2.1实战:5分钟搞定授权码模式(含完整代码)

本文详细介绍了如何在SpringBoot3环境中快速实现OAuth2.1的授权码模式,包括环境配置、核心安全实现及完整代码示例。通过Spring Security集成,开发者可以高效构建企业级安全认证系统,解决版本兼容性问题,提升开发效率。

weixin_29216353的博客 141

RK3588 Weston

下面是使用 weston -B=vnc-backend.so --width=1280 --height=720 ,使用vnc的客户端来远程访问weston桌面。Wayland是一套display server(Wayland compositor)与client间的。,而Weston是Wayland compositor的参考实现。7:在基于wayland 运行Qt 程序。根据不同版本,支持的后端也不相同。2:当前weston支持的后端。4:weston的配置文件。3:weston中的录屏。

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 1031

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万+

通信算法之283:大疆DJI云哨系统-DJI DroneID物理层协议-解速率匹配及Turbo译码

3. 完整云哨接收机,接收灵敏度。交流: 1279682290 ,2. Turbo译码模块。1. 解速率匹配模块。

leegang12的专栏 868

URL和URI的区别

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

koflance的博客 8万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

uri和url是啥区别

URI:统一资源标识符,是一个泛指,表示资源的标识。URL:统一资源定位符,是 URI 的一个子集,表示资源的具体位置及访问方法。

u012534547的博客 1309

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

通俗易懂理解URI和URL的区别

转发:https://blog.youkuaiyun.com/simplebam/article/details/72644094 关于URL和URI的区别,个人见解。    初学java,最近被一个概念搞得头晕脑胀,就是url和uri的概念和区别,网上查了一大通,发现各种回答眼花缭乱,有百科直接粘贴的,有胡说八道的,有故意绕来绕去的,我估计他自己都没搞懂,按照马士兵的说法就是,通通都是一些冠冕堂皇的套话,...

wnx_52055的博客 2万+

URI与URL的区别

URI 统一资源标识符:用来标识Web上可访问的任意类型的资源(HTML,视频·,音频,程序) 比如现在有一个需求找某市的图书馆里的一本书(书也是资源):这本书的位置在“建设路好物图书馆文学区第三个书架的第四层的《XXX》” “《XXX》”相对于“文学区第三个书架的第四层“就是一个标识符 “文学区第三个书架的第四层的《XXX》“相对于“建设路好物图书馆”就是一个标识符 唯一资源标识符不是固定的,而是相对的。主要作用就是用于与其他资源区别开来的一个标识符。 URI由三部分组成: 1:访问资源的命名机制:比

weixin_44353042的博客 1万+

URI 和 URL 的区别

一种定位资源的主要访问机制的字符串,用于指示资源的位置以及用于访问它的协议。

m0_46459413的博客 1282

url 和uri区别_URI和URL有什么区别?

url 和uri区别In IT systems we use a lot of different terms. URI and URL are one of the most popular terms used in IT especially in programming. They can be confused or used interchangeably but they are n...

cunjiu9486的博客 772
上一篇: Android中SharedPreference实例
下一篇: Android中正在获取的服务
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值