搜索
首页web前端html教程URL和URI的有什么区别
URL和URI的有什么区别 Sep 09, 2017 pm 01:12 PM
什么区别

初学http协议,就被这两个相似的术语搞蒙了,查了很多资料,总算搞清楚了。(找资料还是英文啊,靠谱。。。)。

                                                  

 

    一直存在很多技术上的争论,其中最为妙的恐怕就是web地址应该叫什么的问题。通常情况就是这样:有人把地址栏的内容叫“URL”,这时候有些人就来劲了:“不!其实那时URI。。。”

    对于这种纠正的反应呢,通常也有这么几种情况,心眼小的就寻思这人赶紧走吧,淡定点的就耸耸肩表示同意,火气大的就拔刀相向了好不?

那这篇文章呢,就对这个只是提供一个简单的总结,毕竟互黑也要黑到点子上是吧。

 URI,URL,URN

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

“A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象或物理资源。”

“A URI 可以进一步被分为定位符、名字或两者都是. 术语“Uniform Resource Locator” (URL) 是URI的子集, 除了确定一个资源,还提供一种定位该资源的主要访问机制(如其网络“位置”)。“

那我们无所不知的维基百科把这段消化的很好,并描述的更加形象了:

“URI可以分为URL,URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”

通过这些描述我们可以得到一些结论:

 

  • 首先,URL是URI的一种(通过那个图就看的出来吧)。所以有人跟你说URL不是URI,他就错了呗。但也不是所有的URI都是URL哦,就好像蝴蝶都会飞,但会飞的可不都是蝴蝶啊,你让苍蝇怎么想!

  • 让URI能成为URL的当然就是那个“访问机制”,“网络位置”。e.g. http:// or ftp://.。

  • URN是唯一标识的一部分,就是一个特殊的名字。

  下面就来看看例子吧,当来也是来自权威的RFC:

  • ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of the protocol)

  • http://www.ietf.org/rfc/rfc2396.txt (also a URL because of the protocol)

  • ldap://[2001:db8::7]/c=GB?objectClass?one (also a URL because of the protocol)

  • mailto:John.Doe@example.com (also a URL because of the protocol)

  • news:comp.infosystems.www.servers.unix (also a URL because of the protocol)

  • tel:+1-816-555-1212

  • telnet://192.0.2.16:80/ (also a URL because of the protocol)

  • urn:oasis:names:specification:docbook:dtd:xml:4.1.2

  这些全都是URI, 其中有些事URL. 哪些? 就是那些提供了访问机制的.

 总结

下面到了回答问题的时候了:

当我们替代web地址的时候,URI和URL那个更准确?

基于我读的很多的文章,包括RFC,我想说URI更准确。

别急,我有我的理由:

我们经常使用的URI不是严格技术意义上的URL。例如:你需要的文件在files.hp.com. 这是URI,但不是URL–系统可能会对很多协议和端口都做出正

确的反应。

#######################################3

Java中获取一个浏览器访问地址信息

3 request
    * request对象,tomcat根据http协议的请求的内容,将相应的数据封装到request对象中。
    * request和response必须是成对出现,先有的request,再有的response
    * 接口:javax.servlet.http.HttpServletRequest extends javax.servlet.ServletRequest
    * 实现类:tomcat实现,并在请求时,tomcat创建 。
    * 请求行
        * 入口:http://localhost:8080/day05/demo/pathRequestServlet?username=jack&password=1234
        * 请求方式
            request.getMethod();
        * 路径
            // * 请求资源路径
            // 1 获得servlet路径,web.xml配置的url-pattern【★★★】
            String servletPath = request.getServletPath();
            System.out.println(" 1 servletPath -->" + servletPath);  //--> /demo/pathRequestServlet

            //2 获得发布到tomcat时的项目名称【★★★】
            String contextPath = request.getContextPath();
            System.out.println(" 2 contextPath -->" + contextPath);  //--> /day05

            //3 获得请求行中的资源路径
            String requestURI = request.getRequestURI();
            System.out.println(" 3 requestURI -->" + requestURI);//-->/day05/demo/pathRequestServlet

            //4 获得请求URL(地址栏书写)
            String requestURL = request.getRequestURL().toString();
            System.out.println(" 4 requestURL -->" + requestURL);//-->http://localhost:8080/day05/demo/pathRequestServlet
            // *** 以上都不获得get请求的参数

            //5 获得get请求的参数,获得的是所有参数的一个字符串
            String queryString = request.getQueryString();
            System.out.println(" 5 queryString -->" + queryString); //-->username=jack&password=1234

        * 协议
            request.getProtocol();
    * 请求头
        * java.lang.String getHeader(java.lang.String name) 获得指定名称的头信息(一条)【★★★】
        * long getDateHeader(java.lang.String name) 获得特殊数据,时间
        * int getIntHeader(java.lang.String name) 获得特殊数据,整型
        * java.util.Enumeration getHeaderNames() 获得所有的请求头的名称
        * java.util.Enumeration getHeaders(java.lang.String name) 获得指定名称头的所有内容
        * 实例:防盗链,(不能直接访问 /refererTwoServlet)
    * 请求体
        * ServletInputStream getInputStream() 获得请求体的所有内容。(之后讲,文件上传)

    * 核心API
        * 属性操作
            * xxxAttribute (set / get / remove)  服务器端【★★★】
        * 获得参数
            * 获得浏览器 发送给 服务器端的参数(Parameter)
            * API【★★★】
                * 实例:url?username=jack&username=rose&username=tom&password=1234
                * getParameter(java.lang.String name) 获得指定参数的第一个值,如果数据不存在获得null 。
                    * 例如:getParameter("username") 获得 jack
                * java.lang.String[] getParameterValues(java.lang.String name) 获得指定参数的所有的值。
                    * 例如:getParameterValues("username") ,获得[jack,rose,tom]
                * java.util.Map<String,String[]> getParameterMap() 获得所有的内容,key 参数的名称 ,value 该参数的所有的值
                    * 例如:{username=[jack,rose,tom],password=[1234]}
            * 中文乱码
                * POST请求【★★★】
                    * 设置 setCharacterEncoding(java.lang.String env) ,设置字符编码
                * GET请求
                    * new String(username.getBytes("ISO-8859-1"), "字符集");

以上是URL和URI的有什么区别 的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
区分win11商务版和消费者版的区别区分win11商务版和消费者版的区别Jan 05, 2024 pm 04:53 PM

win11business和consumer版本其实就是消费版还有商业版,两者的区别不大,但还是有的,下面我们就一起来看一下两者的具体区别在哪里。win11business和consumer版本区别:1、两者如果版本相同的话,跟专业版没什么区别。2、两者的功能基本相同,不过微软的授权方式是不同的。3、激活的方式也是不同的,consumer是单一授权,而business是批量授权。4、我们下载consumer就可以了。

华为GT3 Pro和GT4的差异是什么?华为GT3 Pro和GT4的差异是什么?Dec 29, 2023 pm 02:27 PM

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

在C语言中,while(1)和while(0)之间的区别是什么?在C语言中,while(1)和while(0)之间的区别是什么?Aug 31, 2023 am 10:45 AM

我们知道在C语言中,'while'关键字用于定义一个循环,该循环根据传递给循环的条件来工作。现在,由于条件可以有两个值,即真或假,所以如果条件为真,则while块内的代码将被重复执行,如果条件为假,则代码将不会被执行。现在,通过将参数传递给while循环,我们可以区分while(1)和while(0),因为while(1)是一个条件始终被视为真的循环,因此块内的代码将开始重复执行。此外,我们可以说明,传递给循环并使条件为真的不是1,而是如果任何非零整数传递给while循环,则它将被视为真条件,因

win10逻辑分区和主分区的区别win10逻辑分区和主分区的区别Jan 03, 2024 pm 04:17 PM

最近不少小伙伴问小编,win10逻辑分区和主分区的区别是什么,我们大多数电脑,其实都是分为了一个C盘主分区,然后其他的D盘、E盘和F盘等都属于逻辑分区,一般情况下是→然后再建→在扩展分区里面,再创建。下面小编整理了详细的教程,一起来看看吧。win10逻辑分区和主分区区别的详细介绍主分区、扩展分区和逻辑分区的区别简单来说,我们大多数电脑,都是分为了一个C盘主分区,然后其他的D盘、E盘和F盘等都属于逻辑分区,将D盘、E盘、F盘等出了主分区之外的磁盘组合,则就属于一个扩展分区。对于硬盘主分区、扩展分区

win32和win64有什么区别win32和win64有什么区别May 29, 2023 pm 05:22 PM

win32和win64的区别是:1、win32是指Microsoft Windows操作系统的32位环境,win64是指Microsoft Windows操作系统的64位版本,比32位版本更加稳定快速;2、win32最高支持2G的内存,win64必须是4G以上内存;3、win64支持基于64位的处理器,而win32却不能完全支持;4、win32追求简洁,win64追求性能。

在C语言中,结构体(Structure)和数组(Array)之间的区别是什么?在C语言中,结构体(Structure)和数组(Array)之间的区别是什么?Aug 30, 2023 pm 09:37 PM

在C中,结构体和数组都用作数据类型的容器,即在结构体和数组中我们都可以存储数据,也可以对它们执行不同的操作。基于内部实现,以下是两者之间存在一些基本差异。Sr.编号键结构数组1定义结构体可以定义为一种数据结构,用作容器,可以容纳不同类型的变量。另一方面,数组是一种用作容器的数据结构,可以容纳相同类型的变量,但不支持多种数据类型变量。2内存分配输入数据的内存分配结构不必位于连续的内存位置。而在数组的情况下,输入数据存储在连续的内存分配中,这意味着数组将数据存储在分配连续内存块的内存模型中(即,具有

JavaScript和PHP的cookie之间有哪些区别?JavaScript和PHP的cookie之间有哪些区别?Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是记住和跟踪偏好、购买、佣金和其他信息的最有效方法。更好的访问者体验或网站统计所需的信息。PHPCookieCookie是存储在客户端计算机上的文本文件并保留它们用于跟踪目的。PHP透明地支持HTTPcookie。JavaScriptcookie如何工作?您的服务器将一些数据发送到访问者的浏览器cookie的形式。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时

win7企业版与win7旗舰版有什么区别的详细介绍win7企业版与win7旗舰版有什么区别的详细介绍Jul 14, 2023 pm 08:37 PM

win7有好几个版本,对于这些琳琅满目的win7版本,很多朋友也是不知道这些win7版本有什么区别了,功能上哪个更好,哪个系统更适合自己,这里小编和大家介绍下win7企业版与win7旗舰版有什么区别的详细介绍,大家快来看看吧。1、Windows7企业版(Enterprise)这个版本面向企业市场的高级版本,主要对象是企业用户以及其市场,满足企业数据共享、管理、安全等需求。包含多语言包、UNIX应用支持、BitLocker驱动器加密、分支缓存(BranchCache)等。通过大量授权给有与微软签订

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)