00:00
我们来说一下绝对路径跟相对路径的问题,那实际上呢,在开发的时候。我们建议大家,或者说我们要求大家一定要写绝对路径,要写相对路径的话呢,可能会有问题,但是写绝对路径肯定没有问题。写一个笔记。绝对路径的问题。首先呢,有一个大原则,说开发式。建议。编写绝对路径。为什么呢?写绝对路径肯定没有问题,但是写相对路径可能会有问题。
01:13
好,我们来看一下,呃,写相对路径,它怎么会有问题了。我们来新建。一个GP,比方说这个叫a.GP。注意这个是根部下的哈。标识一下。H4。AA。这个页面呢,我来写一个超链接,我去B页面,这个B页面在pass这个目录下的b.JSP。B。OK,我来新建一个。文件夹叫。里边呢?新建一个b.JSP。
02:02
改名叫。b.GSP好了b.GSP写一下bbb配置,然后呢,我这个bbb配置我连到。C这个页面,而C这个页面跟B在同一个路径下,这个时候我们看我无论是啊A连B,还是B连C,我用的都是相对路径。上来。过来就叫c.GSP。说CCC配置,然后呢,我写一个去AA在哪啊,A在它的上一级目录的。A点加P,我们说to a配置。好了,先跑起来看一看有没有问题。ABC没问题。
03:02
看一下效果。那A这个页面我们看B这个页面,哎,Pass目录下的去C。再返回,整个这一圈是OK的。同学看到了是吗?说你写相对路径也没问题啊,但实际上的话呢,我们知道我们有的时候啊,我们不能够直接连到一个GSP,而需要通过一个sol,然后再通过转发的方式给到JSP。再说一遍啊,有的时候呢,我们不能够直接通过一个超链接连到一个JSP,而中间需要通过一个。为什么需要这样呢?因为有一些JSP上边需要去显示一些数据库的数据,而显示这个数据库数据的话,通过MVC设计模式,我先需要到,然后。
04:04
去查DAO,把那个结果查出来再给到JSP,而这个JSP本身。是没有显示数据的能力的,特别是在我们这个MVC这个模式下,是吧,我们不建议也不能在一个JP下边直接去连一个数据库。我们强烈不建议这样做,所以说哎,我由A到B,比方说我B里面有一个数据是需要从sol里边得到的,我来建一个so,我们写一下。新建一缸service,我这个就写一缸test com点。堆鼓一下扎外。So。C。呃,覆盖度盖的方法就可以了。
05:09
说什么模拟从数据库。中查询数据,比方说呢,哎,我们查到了一组。一种城市。等于。As。我们写三个城市。比方说有北京。上海。广州。好,写完,然后呢,把它放到筷子里面。Set attribute。
06:00
Cities。C,然后我需要在b.GP这个页面上去写这个C,我需要怎么显示啊,我们需要通过一个转发的方式看。通过。转发的方式。响应。根目录下的pass目录下的b.GSP。request.get request。根目录下的pass下边的b.GSP.request response写完。好了,那这个时候呢,我们这个A。这样写,我连到是his,然后再给我B。好看效果。等一下哈,这个B里边的话呢,我确实是来显示一下吧。第二。边怎么显示啊?通过一个表达式。
07:05
request.get attribute。OK,看效果。这个还是A。D还是A好了。我先看我通过这个。显示一下。OK哦,这个是now。这个结果没有得到,为什么呢?City。过来。CK少个亿?再来。刷新过来,诶,北京广州上海,然后to c page,这个时候我从A到B是OK的。大家注意,我从B到C,我点一下。怎么了?是不是找不到这个页面了?
08:01
看到了吧,这个时候找不到这个页面了,为什么。这个就是我们使用相对路径可能会出现的。问题。怎么回事呢?回来再看一遍,我由A到B的话,注意我这个串联音怎么写的,我是写的是,嗯,当前外部应用的根目录下的这个叫test s。好了,那这个时候这个路径呢,是相对于这个根路径的耳,我在b.GSP我连到C的时候,我用的是不是一个相对路径啊,那这个时候默认情况下,它认为c.GSP跟这个是在同一个路径下,那它就到根目录下去找这个c.GSP当然。找不到了,哎,这个时候的话呢,就出现了这个路径错乱的问题。这就是我们讲的使用相对路径可能会出的问题。
09:00
我们来记录一下。好了。说在。有。So much。转发到。JSP页面是。然后呢,此时。浏览器。地址栏上。显示的是。的路径而。弱。做什么呀?若GP页面的超链接。还是相对于该。页面的。地址则。可能会。出现路径混乱的问题。
10:02
哎,我这块的话呢,我是一个明显的例子。我们看,哎,我a.JSP。这个是在。根目录下。好,然后我在pass目录下会有个什么呀。在这个路径下,我有一个。b.GSP还有一个c.JSP好,我现在这个情况就是我由a.GP到。一个啊。然后通过转发的方式。转发到哪呢?到了这个b.GSP注意这个是登路径的,那么b.GSP页面有一个超链接,有一个。超链接。连到哪了呢?这个时候我连到的是啊。
11:04
和b.GSP在同一。同一。路径下。路径下的c.GP这个时候就可能会出问题。下一个啊,无法得到页面。OK,这就是我们看到的问题。所以说写相对路径呢,可能出可能出这样的问题,解决方案是写绝对路径肯定没有问题。好,往下看,说编写。绝对。入境。可以。避免上述问题。好了,那我们来看一下吧,什么叫绝对路径?
12:04
第一个问题,我们需要明确一下。在Java外。什么叫?绝对。路径,这是第一个问题,哎,什么叫绝对路径?好了,第二个。如何完成编写?如何完成编写?这是我们下边需要解决的两个问题,我们首先呢,我们看到哦,写相对路径可能会有问题。然后我们说写绝对路径没有问题,那需要看两个,第一个什么叫绝对路径,第二个我们如何来编写这个绝对路径。这个绝对路径呢,指的是相对于当前外部应用根路径的路径,称之为绝对路径。
13:04
说。相对于当前web应用的。跟路径的。路径。为绝对路径。好了,我们举个例子哈。什么叫相对于当前外部应用的根路径的路径,我们知道,看我访问这个回来。回到头大家看这个a.GSP我们就说它是一个。绝对路径为什么呀,因为它是相对于这个D35的。这就是一个绝对路径。好了,我来点这个b.GSP我们看啊这个b.GPA里边的话呢,我要是这么写。那我现在的话呢,由A到B啊,我是通过这个serve,我加上一个斜杠。过来。刷新再回退一下啊。
14:01
刷新好了,我去B注意看这个时候怎么样,我连这个这个S是什么呀,它是相对于这个站点的根部吧,这个就不叫。绝对路径,我们这个绝对路径指的是相对于当前web应用的根路径的这个路径称之为绝对路径。我们说它是。复制过来诶。这个是。这个我们说它是什么呀。这个实际上叫。Contact path。Contact us。就当前外部应用的上下文路径。当前web应用的上下文。路径这个是再来一个。再来一个,我要是这么写的话。
15:01
这个就不是。好了,说白了就是这个绝对路径。啊。我要连的任何一个路径,都必须得加上这个。Context path。记,任何的。路径。都必须。带上。Context。Pass,我只要这样写的话,它不就是相对于。外部应用上下文路径的这个路径了吗?我任何一个都需要加上它,于是我过来,我这样写,你看,哎。斜杠我写成一个叫Z35斜杠,这个就是一个绝对路径。
16:00
回来大家可以看。刷新。这点这个时候就没问题了,好了,我要是不加他的话就不行。这个时候就不行。这个时候就不行好了,那这里边的话呢,实际上我们看到一个什么呀,实际上有一个斜杠的问题,所以说这里边儿我们还得说一个问题,叫关于斜杠。三。Java。Web。开发中的斜杠。到底。代表什么?为什么会有这个说法呢?我们回来哈,我们看这个a.GP我连B的时候,我们看我就确立四位的时候,这个斜杠代表什么呀。实际上它代表的是站点的根目录是吧,而我在这个serve类里边做转发的时候,这个节点有什么呀。
17:01
这个形号代表的是。当前web应用的根目录,就是说这个代表的是contact pass。那它到底什么时候代表contact pass,什么时候代表站点的根目录呢?啊,这个需要说一下,因为这跟上面是相关的,说这个啊,有时候代表的是。我们看到是吗?当前web应用的。跟。路径,哎,还有时候代表的是啊。Web。站点儿的。跟路径好了,这个web站点啊,在我们这边指的是什么呢?指的是它这个叫web。站点外观应用呢,就是加上这个context pass,就它。我们所谓的这个绝对路径指的是这个,这个相对于它的叫绝对路径。
18:05
OK,那我们归纳一下吧,目前这个情况有哪些是?代表。这个根路径,呃,Web应用的根路径有哪些是外表,有哪些是代表这个站点的根路径呢?我们先看说代表当前web应用的跟路径,目前有两个,有两个情况,第一个request请求转发。请求。转发时。这个时候这个斜杠代表的是。Web应用的跟路径拿过来。CTRLC过来我们说,哎,这个写法。好了,还有一个时刻,目前是什么时候呢?目前是在我的这个web XL文件里边。这个也是。那我在配这个service map的时候,它也是。
19:00
C。Y吧,点XL。文件中映射。So late。访问路径,这个时候这个斜杠代表的也是。Web站点的。啊,也是代表当前外部应用的跟路径,这个时候它代表的也是当前外部应用的跟路径,好了这两个时候是我们再看,那什么时候是代表这个站点的根路径呢?我们看到比方说超链接。超链接。拿过来,哎,这个代表的就是web站点的根路径。还有什么时候啊。那再比方说表单。
20:00
装大。Action。笔来写了哈。Form。Action等于,比方说我,我等于一个login GSP,这个也是。站点的跟路径,还有一个时候是什么时候,我们写的response.send就是做。请求重定向的时候。做请求重定向的时候,这个时候它代表的也是web站点的分路径,这个我们在前面讲请求转发和请求重定向的时候,详细的来说过,这里边的话呢,我们就不再重复进行说明了。比方说我去的是。呃,斜杠a.GP啊。这三个时候是代表站点的跟路径,而这个时候的话呢,是代表外部用的跟路径,那能不能总结一下,我不能一个一个记啊,啊,我们也不希望大家一个一个记,怎么总结呢?我们看一下啊。
21:10
这个说呀说落斜杠虚。焦。由谁呢?由。容器来。处理。这个时候它代表的就是。Web应用的跟路径,你想啊,这个web X文件,这个肯定交得交给service容器来处理吧,哎,我请求转发,我们知道这个时候我实际上是发了一次请求,我在服务器内部搞了一个转发,这是服务器来进行处理,实际上后面我们还会讲到啊,各种。定制。标签中的斜杠,哎,它们代表的也是当前外部应用的根路径,好了回来,那这个是什么呢?这就是反过来。
22:07
有没有?落这个斜杠交游。浏览器。来处理,那这个时候它就是站点的跟路径,比方说这个超链接A这个form浏览器解析吗?同学可能会想到这个,哎,老师你这个瑞po这个斜杠是服务器解析啊,大家想一下,我们在做这个重定向的时候,我是不是把这个响应打回去了,打回给浏览器,告诉浏览器啊去这个地儿,所以说这个是浏览器解析。清楚了吧,这就是我们讲的这个关于斜杠的问题。好了,这个斜杠说清楚的话呢,然后我们这块我们就可以放心大胆的来说这个绝对路径的问题,那首先绝对路径指的是啊,相对于当前外部应用跟路径的路径相对于当前外部应用的。
23:07
针对于当前。相对于。Pass路径,这样会好一些。B相当于它的。然后呢,G任何路径都必须加上这个context pass才可以,嗯,比方说嗯,这个就是呃,这个就不行。好,那我们如何来编写呢?编写的时候我们说。说需要。这样说,若斜杠。代表的是。站点的根。站点的。根目录。在其前边,在其前面加上。Contact pass就可以了啊。举个例子,比方说它。
24:05
CTRLC。过来。怎么改呀?哎,我需要变成加上context pass怎么加?我们可以由request去获取,还记得吧?Request。写一下看叫request点儿get。Contact。Pass。这就。可以了,当然我获取这个contact pass的话呢,我也我也可以调。Application及service这个get pass方法是一样的,我拿过来写一下,大家看这个时候啊,我说我这么写。Request get context。Pass,加上它就可以了,哎,我CTRLC。过来,我。
25:00
b.JSP怎么写加它,然后告他是pass路径下的,需要加它吗?那这个呢,是根路径下的啊好了我回来。跑到。啊,A点加P,我点一下没问题,我去C也没问题,我再回A还没问题,这就是我们解决。这个的编写绝对路径的方式,我们直接加上这个contact pass就可以了。而而这个contact。可以有。request.get。Contact us。方法或。或者或application。
26:00
Request。这么写或。Application的get contact的方法来获取。来获取这就可以了,哎,我们以后写的话呢,我们都这么写,我再过来比方说呢,那这个时候我要通过。重镜像的方式去C,注意哈,我通过重镜像的方式去C,我来写一下response.send。我先这样写斜杠。呃,Pass目录下的c.GSP这么写,我这么写对不对啊。我们说这个斜杠代表的是站点的根目录,找不到看一下吧,回来。A,没问题,OA就有问题了。哦,刚才这个还有一点问题。我们把这个问题先说一下。什么问题呢?你看这个时候我回到这个A的时候,这是不是两个斜杠。
27:04
那怎么会有两个斜杠的问题呢?我先回来,这个是没问题的,好,我看一下原文件。这个时候我们发现什么有两个路径,这应该是c.GP这个写差了。多写了一个保存。刷新再跑这就好了,好去B好了,你看这个时候B去C是不是去不了啊,在哪呢。必须去不了,我需要加上这个contact pass request.get contact pass。加。保存再回来。Contest。多了个T。OK。服务器。重启一下。
28:01
回来。刷新。这个时候也没有问题,直接来的C嘛。是吧,那解决方案的话呢,呃,这样写。这是我们在写重定向的时候需要需要写的一个方案。在这个里边。如何完成?这也是一个成功的写法,我们把这个拿掉了啊。那这个form呢,这个form写的时候呢,直接这样加就可以了。好了,这就是我们说的关于这个相对路径和绝对路径的问题,大家需要掌握以下的几点,第一个,我们需要知道为什么写相对路径可能会有问题。第二个我们需要知道哦,这个斜杠在外部应用里边代表的是神马意思,我们呢,暂时列出了穷举的方式啊,一个一个举的,但实际上它是有。
29:08
特点。那最后一个我们说了如何来写绝对路径,分两个层次是吧,第一个绝对路径是什么?第二个如何来写?
我来说两句