URI介绍

URI(Uniform Resource Identifier),是统一资源标识符的缩写,是一个用于标识某一个Web资源名称的字符串,该标识允许用户对任何资源通过特定的协议进行交互。Web上可用的每种资源,如:HTML、图像、视频和音乐等资源,都由一个统一资源标识符进行标识。URI一般由三部分组成:

●  访问资源的命名机制

●  存放资源的主机名

●  资源自身的名称,由路径标识,着重强调于资源

URL介绍

URL(Uniform Resource Locator),统一资源定位符的缩写,URL是一种特殊类型的URI,包含了用于查找某个资源的全部信息。URL一般由三部分组成:

●  协议类型

●  主机的IP地址(可以包含端口号)

●  资源路径

HTTP之URL

HTTP使用统一资源定位符URL来传输数据和建立连接,以下面这个URL为例,为大家介绍下URL的各部分组成:

http://www.itxdl.cn:8080/news/index.jsp?boardID=5&ID=24618&page=1#name

从上面的URL中可以看出,一个完整的URL包括以下几部分:

●  协议部分:该URL的协议部分为“http”,这代表网页使用的是HTTP协议,在Web中可以使用多种协议,如HTTP、FTP等等,在协议后面的“//”为分隔符。

●  域名部分:该URL的域名部分为www.itxdl.cn。一个URL中,也可以使用IP地址作为域名使用。

●  端口部分:跟在域名后面的是端口号,域名和端口号之间使用“:”作为分隔符。端口号不是一个URL必须的部分,如果省略端口号部分,将采用默认端口号。

●  虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分,本例中的虚拟目录是“/news/”。

●  文件名部分:从域名后的最后一个“/”开始到“?”位置,是文件名部分,如果没有“?”,则从域名后的最后一个“/”开始到“#”位置,是文件名部分,如果没有“?”和“#”,那么从域名的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.jsp”。文件名也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。

●  锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分。

●  参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

URL编码

如果一样东西需要编码,那么就说明这样的东西并不适合进行传输。原因是多种做样的,如长度过大,包含隐私数据等,对于URL来说,之所以要进行编码,是因为URL中有些字符会引起歧义。

例如,URL中的参数使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如username=snape&password=123,但是如果value中的字符串包含了=或&,那么一定会造成接收URL的服务器解析错误,因此必须将引起歧义的字符进行转义,也就是进行编码。

又如,URL中的编码格式采用的是ASCII码,而不是Unicode,也就是说不能在URL中包含任何非ASCII字符,例如中文。

在URL中是使用百分号编码的形式对中文进行编码的,因为使用百分号编码的方式非常简单,使用%加上两位十六进制数值即可。URL编码默认使用的字符集是US-ASCII,例如a在US-ASCII码中对应的十六进制形式是0x61,那么URL编码之后得到的就是%61,我们在浏览器地址栏中输入https://www.baidu.com/s?wd=%61,实际上就等同于在百度中搜索a了。

对于非ASCII字符,需要使用ASCII字符集的超集进行编码得到相应的十六进制数值,然后对每个字符执行百分号编码。对于Unicode字符,使用utf-8对其进行编码得到相应的十六进制数值,然后对每个字节执行百分号编码,如“中文”使用utf-8字符集得到的十六进制形式为“0xE4 0xB8 0xAD 0xE6 0x96 0x87”,经过“URL”编码之后得到"%E4%B8%AD%E6%96%87"。

IT兄弟连 JavaWeb教程 URI、URL的更多相关文章

  1. IT兄弟连 JavaWeb教程 文件下载技术

    ●  列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...

  2. IT兄弟连 JavaWeb教程 Servlet API

    Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建 ...

  3. IT兄弟连 JavaWeb教程 AJAX常见问题

    1  中文乱码问题 ●  POST提交乱码 乱码原因:所有浏览器对Ajax请求参数都使用UTF-8进行编码,而服务器默认使用ISO-8859-1去解码,所以产生乱码. 解决方法:在服务器接收请求参数前 ...

  4. IT兄弟连 JavaWeb教程 过滤器1

    Servlet过滤器是从Servlet2.3规范开始新增的功能,并在Servlet2.4规范中得到增强,监听器可以监听到Web应用程序启动和关闭.创建过滤器和监听器需要继承相应接口,并对其进行配置. ...

  5. IT兄弟连 JavaWeb教程 使用JSTL函数

    在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在JSP中可以直接使用这些函数. 在JSP中使用Functions标签库,需要通过taglib指令引入该标签库: & ...

  6. IT兄弟连 JavaWeb教程 JSP中的三大指令

    指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中.也就是说,指令标识对于客户端浏览器是不接见的.JSP页面的指令标识与我们的身份证类似, ...

  7. IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie常用方法

    以下是在Servlet中操作Cookie时可使用的有用的方法列表 ●  public void setDomain(String pattern) 该方法设置cookie适用的域,例如 itxdl.c ...

  8. IT兄弟连 JavaWeb教程 ServletContext对象

    ServletContext是Servlet与Servlet容器之间直接通信的接口.Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象.每个Web应用都有唯一的S ...

  9. IT兄弟连 JavaWeb教程 Servlet表单数据

    很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编 ...

随机推荐

  1. Oracle 物理和逻辑备库健康监測的一个根据

    以以下keyword眼为例: 1 物理备库健康检查根据: Tue Apr 22 16:44:51 CST 2014Media Recovery Log /data/CMS/arch_log/1_583 ...

  2. MapReduce将HDFS文本数据导入HBase中

    HBase本身提供了很多种数据导入的方式,通常有两种常用方式: 使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 另一种方式就是使用HB ...

  3. 微信小程序项目实例

    目前为止最全的微信小程序项目实例 2018年03月20日 11:38:28 Happy王子乐 阅读数:4188   wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch ...

  4. npm 的常用操作

    cd 项目目录 npm install -y 初始化信息,-y表示所有的选择都表示确定 执行完之后会自动生成一个package.json文件 添加依赖: npm -i(install) jquery ...

  5. python调用nmap进行扫描

    #coding=utf-8 import nmap import optparse import threading import sys import re ''' 需安装python_nmap包, ...

  6. npm ERR! code EINTEGRITY npm ERR! sha1- 报错解决办法

    npm ERR! code EINTEGRITY npm ERR! sha1- 报错日志 npm ERR! code EINTEGRITY npm ERR! sha1-OGchPo3Xm/Ho8jAM ...

  7. EventStore文件存储设计

    背景 ENode是一个CQRS+Event Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删 ...

  8. Vijos P1389婚礼上的小杉

    背景 小杉的幻想来到了经典日剧<求婚大作战>的场景里……他正在婚礼上看幻灯片,一边看着可爱的新娘长泽雅美,一边想,如果能再来一次就好了(-.-干嘛幻想这么郁闷的场景……). 小杉身为新一代 ...

  9. python selenium实现百度搜索

    1.环境 python2.7+selenium+phantomjs+linux 2.代码 #-*-coding:utf-8 -*- from selenium import webdriver fro ...

  10. WinDbg 查看静态变量

    有如下Class.若想查看静态变量内容.因为静态变量和类绑定,仅需要查看类即可. namespace ConsoleApplication13 { class Program { public sta ...