00:00
好,下面呢,我们再来学习一个非常基本的,但是又是。困扰很多程序员的一个问题。就是访问路径问题,我们说啊,困扰程序员的问题有两个,一个是中文乱码问题,一个就是访问路径问题。很多程序员,特别是刚入行的初级程序员,对这个路径问题总是糊涂,弄不清这个路径到底是该怎么怎么写。那么下边我们就来详细学习一下路径问题,那么首先啊,这里边儿大家要清楚我们的访问路径,它的组成。我们的访问路径分为两部分。资源路径和资源名称,不管是uri还是URL都一样啊。都分为这两部分,比如说我们这个。
01:02
就我们刚刚写的这个程序是吧。啊。这个程序呢,呃,其实这个程序我们起这个名字啊,很不好,呃,这样吧,这个程序咱们给它改个名吧,这个forward include是不是都在它里边实现了。我们给他改个名吧。改成直接改成requestpa吧,Request这样可能更好一些。好,这就改过了,你看这儿也改了,你看这儿也改过了啊。对不对,这都改过了啊,因为啊,现在这个项目它处于发布状态是吧?啊,所以他就都改了,那咱们把这个程序呢。把这个服务器再重启一下就OK了。好。
02:00
那么咱们大家来看啊。当然了,这儿。这就变了。这是他是吧,那么大家来看这是我们的访问路径,或者说请求路径对吧。它就分为两部分,哪两部分呢?一个是资源路径,这是资源路径,还有一个是资源名称,诶那资源名称的大家知道,默认的访问。现在默认的访问页面是这个index.itl吧?实际上这相当于省略了index.itl。那么它。就是我们的资源名称。这个就是资源路径,它整体组合起来,这个URL就叫做。哎。就叫做访问路径或者说请求路径,对吧,首先大家应该知道这样的一点啊。
03:04
这是ULUI也一样啊,我给这抓了个图,大家看看这是个超链接是吧?那么你提交的这样一个,这是个uri是吧,那提交的这个路径里边,它叫做资源路径,它叫做资源名称。那什么是资源路径?什么是资源名称?不管是URL还是uri。有一个很简单的区分的方法,就是最后一个斜杠,最后一个斜杠后边的部分是资源名称。其他部分就是前面部分就是资源路径。那以它为例,我们找最后一个斜杠,那肯定就是它呀。他是我们的。资源。名称和资源路径的分水岭。这个是资源名称。
04:01
这个是资源路径,OK。首先知道这个组成啊,然后然后这儿说了,我们根据资源路径是否可以独立完成资源的准确定位。拿它当做判别的标准,我们可以把路径分为绝对路径和相对路径。那我问问大家。可以独立完成资源的准确定位。在我们web开发里边,Web项目中什么路径只有什么路径可以准确的定位一个资源。URL协议开头。紧接着是主机对吧,紧接着是。我们的项目名称,或者说是我们的contest pass。
05:00
对不对。然后是资源的名称,这个东西可以准确的定位。就是URL。那么根据这个标准,我们可以分为绝对路径和相对路径,那来看绝对路径,绝对路径是什么?绝对路径,那就是你给我说一个路径,我就能准确的找到你,你看我这儿举了一个例子。啊,你要告诉对方你现在的位置,你给他说我现在在哪,我在北京故宫。游客A入口处。在北京故宫游客A入口处,你看这就很很准确,在哪儿呢?首先我在故宫是哪儿呢?是北京的故宫。对吧,他不是台湾的。啊,也不是五是吧,我们知道是不是沈阳那儿也有个故宫是吧?啊也不是沈阳那边的,他就是北京故宫。
06:07
游客的A入口,那abcd好几个入口,这A入口。这就是个绝对地址,你马上就能找到他。那么对于我们web应用的绝对路径,它指的是什么?指的是带协议的,带访问协议的路径,也就是我们的URL,这就是一个绝对路径,也就是说在我们web应用里边,绝对路径其实就一个东西,什么URL?OK,这是绝对路径,那什么是相对路径呢?那不是绝对路径,其他都是相对路径,你给的这个路径,我必须要有一个参照路径。才能。才能准确定位,也就是说我需要把这个相对路径给你变成绝对路径,我才能找到你。
07:03
所以这里边儿有这样一个关系。什么呢?绝对路径等于参照路径加上相对路径。有这样一种关系。你看我这儿说了啊,又举了例子,诶,要告诉你对方你现在位置,你给他说我在人民公园正门口。哦,人民公园正门口。哪个人民公园?我们可以这样说,我们好多城市都有人民公园。你在哪个城市的人民公园啊?对不对。你给张三说,哎,那张三问你,你今儿在哪儿呢?啊,张三说,我在人民公园正门口呢。然后他就跑到。他就跑到那儿。你注意他跑到了。
08:01
你说的那个人民公园,你说的哪个人民公园,其实你这里边儿没说,但是默认有一个。参照路径什么呢?和听的这个人。是在同一个城市呢?比如说你们在哪儿?当然咱们北京,北京好像没有人民公园是吧,那假设说北京有个人民公园,那你说你在哪儿呢?你这会儿在北京呢啊,然后那个人问你,你在哪呢?你给他说我在人民公园呢,然后我在人民公园正门口,然后他又跑到北京的人民公园正门口,因为什么你们两个人对话的时候,有个默认的参照路径,就是我们都在哪,都在北京的。但如果说你。如果说对方啊,你知道你知道听你说话,这个人在哪儿呢?在。
09:02
他就是在上海呢,你给他说,他问你,你在哪儿呢。你肯定要告诉他呀,我这会儿在北京呢。你先搞到城市,我在北京呢。你在北京哪儿呢?我在北京人民公园正门口呢。对不对。因为你们默认。那个参照路径不一样。所以这里边儿有个关系啊。就是绝对路径等于参照路径加上相对路径。那在web应用里边儿。在web应用里边啊,你注意这里边儿,这是我们要说的重点了,浏览器或者服务器会自动为不同的相对路径添加不同的参照路径。将相对路径转换成绝对路径,你注意这个工作是由浏览器或者服务器自动完成的。
10:07
有,但有有有有学员在那说了,它自动完成的,那我还管他干嘛呢?可你要注意啊,程序是你写的,我们作为一个程序员,你必须要理解并且掌握。浏览器或者服务器。把相对路径变成绝对路径的这个规则。就是我我这样写一个路径,它的参照路径是什么?浏览器用的参照路径是什么,服务器用的参照路径又是什么。你也知道他这个规则,你知道了这个规则,你就可以按照这个规则去写你的路径了。你在编程的时候才不至于糊涂。所以这个规则对于我们来说很重要,我们下边学习的是什么?其实就是学这个规则呢。
11:03
那我们再来说相对路径,这儿说了啊,写法有两种。有两大类相对路径,一种是以斜杠开头的相对路径,一种是以路径名称开头的相对路径,以路径名称开头的,也就是不以斜杠开头的,比如说大家看这个。这个路径。它就是以路径名称开头,它是叉叉叉开头的,而不是斜杠,如果前面加一个斜杠,那就是以斜杠开头了,所以根据是否有斜杠。根据是否有斜杠。我们。又将路径分为了两类啊,以斜杠开头的和以路径名称开头的相对路径。这两种相对路径。又根据它出现的文件的不同。
12:04
那么我们的浏览器或者服务器为其添加的参照路径也是不一样的,也就是说我拿到一个相对路径,那么。浏览器或者服务器给我配上的参照路径是什么?这个才是我们学习的重点。也是路径问题最容易出错的地方。所以我们下面要重点记忆,重点理解什么,如何确定相对路径的参照路径,或者说。浏览器。或者服务器给我们。自动添加的参照路径是什么?这个规则我们要学习。
13:01
好,我们来看相对路径啊,分这么两大类,以斜杠开头的,以路径名称开头的。这两种相对路径,那么以斜杠开头的相对路径,你注意啊,它复杂又分为了两类。前台路径和后台路径。分这么两类。什么是前台路径?你看啊,这说了,由浏览器解析执行的代码中所包含的路径,你注意啊,是由浏览器解析执行的代码里边所包含的路径。哪些是浏览器解析执行的代码呀?啊,哪些是浏览器解析的,HTMLCSSGS,这都是由浏览器解析的。
14:02
所以出现在这些文件中的路径。它就叫前台路径。另外。JSP文件我们还没学呢,我们后边有一个专题,专门是讲JSP的,那么JSP文件里边的。静态部分的路径,你注意啊,GP文件它是一种动态文件。但它的静态部分指的什么?你看我加加了个说明,就是iml标签中的路径,也就是说我们JSP页面啊,加了它里边JSP是什么?是由Java代码加IM构成的,或者说是ML加Java代码构成的一种文件,那么所谓的静态部分的路径就是HTML标签里边的路径,说白了还是他。好,例如这举个例子啊,例如IL及JSP文件中的image。
15:05
用过吧,图片src里边这是不是放路径的。Ref超链接,这是不是放路径呢?Form表单的action,这是不是放路径呢?这些路径。这些标签里边出现的路径都是前台路径。当然你注意。这儿有个前提,都得是以斜杠开头的啊,这前台路径它是以斜杠开头的。路径啊,哎,这些标签里边出现的以斜杠开头的路径,那就是前台路径,再比如说CSS文件里,CSS文件里边是不是有个background。这个属性吧,这是不是可以放图片呢?那它里边放的是不是也是路径JS文件里边的这个ref。
16:00
那它里边是不是放的也是路径,像这些路径。这些里边出现的以斜杠开头的路径都是前台路径。那么需要注意的啊。需要注意前台路径的参照路径。是web服务器的根路径是谁就是他。这是web服务器的根路径,就是协议加上主机啊。这个你得记着啊,很重要。这个得记着,当然没关系,我们这会儿啊,讲的是纯理论,我们一会儿给大家挨着写程序来测试。那么在这儿需要理解一点。首先将前台路径转换为绝对路径,将前台路径转换为绝对路,怎么就变成绝对路径了呀?前台路径是个相对路径啊,将潜在路径转化为绝对路径怎么转呢?
17:06
有个公式啊,绝对路径等于参照路径加。加什么?在相对路径啊。对不对,那你前台路径再加上参照路径,那就是绝对路径,那参照路径是谁,现在参照路径就是它。那么这个转换工作是由浏览器完成的。但是你需要注意这个路径。它的作用是什么?需要为用户提交。对某种资源的请求是用户要提交请求,我要访问某种资源了,所以我写这个路径。然后呢,他拿这个路径要到服务器里面去查找和定位某个资源,就你指定的资源呢。所以前台路径的作用是什么?就是查找,你写这个路径就是为了要获取到。
18:05
服务器里边是不是这个资源呢。所以要把这个路径给你变成绝对路径。好,再看后台路径。后台路径。那相对比较简单,怎么了?是由服务器解析执行的代码或者文件中所包含的路径?由服务器解析执行的代码及文件中所包含的路径。不太具体,那具体来说,那就是Java代码里边的路径,JSP文件中的动态部分,什么是动态部分Java代码块,我们到后边学JSP时候会说啊,JSP文件的动态部分中的路径以及。配置文件里边的路径,当然了,配置文件我们现在是不是就见过一个叉L啊。
19:00
对不对?当然了,学Java基础的时候,大家应该见见过property。Properties这种配置文件吧,对不对,像这种配置文件里边的路径。它都是要由谁我们服务器解析执行的,那么像这些文件里边的路径,当然前提仍然是以斜杠开头。那么它成为后台路径。后台路径的参照路径是什么?Web应用的根路径?Web应用,什么叫web应用?你注意啊,这是web应用的根,这是什么web服务器的根不一样啊,Web应用的根路径是谁?前面的。协议加主机,然后呢,项目名称,这是项目名称。这是后台路径的参照路径。
20:01
呃,需要大家知道的啊,后台路径的这个转换工作,把后台路径转换成绝对路径,后台路径也是一种相对路径啊,要变成绝对路径是怎么变的?参照路径加后台路径就是绝对路径,参照路径谁是他。Web应用的根吗?那么这个转换工作是由服务器自动完成的。需要大家理解的是啊,这后台路径。这个路径的作用是什么?它是标识出该资源在服务器中的路径,你注意是标识出,那你你想想啊,你要让客户端来访问你这个资源,你是不是得给这个资源一个路径啊,然后呢,让客户端按照你指定这个路径是不是来访问呢。
21:01
所以。它的作用是标识这个资源在服务器里边的位置。标识它的路径,它的位置,以便客户端能够按照这个设定的路径来查找相应的资源。简单来说,后台路径的作用是标识。前台路径的作用是查找。这是它不一样的地方啊,嗯,在这儿呢,给大家再说一下啊,给大家再说一下,这个以斜杠开头,里边有个特例。后台路径里边有个特例什么呢?就是它response里边有个send re,这这在哪呢?这肯定是出现在里边呢,对不对。他肯定是Java代码里边的,但这个是一个特例。关于这个特例,我们一会儿写代码的时候给大家说啊,在这先不说它说你也听不明白是吧,特例记在这儿,有个特例啊,OK。
22:07
这是我们刚才说的什么?以斜杠开头的相对路径,再看以路径名称开头的相对路径。这个理论上比较简单,但实际应用的时候,实际操作的时候,这个。比前面以斜杠开头的要复杂,我们来看啊,以路径名称开头的相对路径。无论是出现在前台页面,还是出现在Java代码或者是配置文件。不管出现在哪,前台还是后台,它的参照路径都一样。都是当前访问路径的资源路径什么意思?什么意思,那我们说了,前面我们就讲了呀,组成。是不是一个路径?它有两部分构成,一部分是资源路径,一部分叫资源名称,它的参照路径是什么?就是资源。
23:10
路径。是资源路径什么意思啊?先不用管你听不明白,这会儿我给你讲的这堆东西,你听不明白很正常。我们一会儿一举例子就清楚了。那么。啊,这个特例,即使对于这个特例啊,我们现在这个特例这个事儿先不管,你先记着他就行了。啊,这我给大家弄了个表格,弄了个表格啊,相对路径的类型,前台路径它的参照路径是什么,当前web服务器的跟路径,后台路径的材料路径是什么,当前web应用的跟路径。一路径名称开头的相对路径,它的参照路径是什么?是当前访问路径的资源路径。
24:04
谁来完成这个转换呢?这个是浏览器,这个是web服务器,这个呢,浏览器或者web服务器,那路径出现的位置不一样,完成者不一样。好,我们首先把基本理论给大家先说一下,那么再往后我们就挨着来看例子了。我给大家强调一点,我这会儿讲的这段内容。你在听完。后边例子以后重新把这段。视频再看一遍,你就完全清楚了。你记着啊,听完后边的课以后,再回头听这段理论,必须要回头再听啊,这样才能彻底解决这个路径问题。
我来说两句