00:00
我们来学习请求的重定向与转发,以下知识非常重要。好了,我们先来看这个请求的转发,请求转发呢,我们需要借助于一个接口,叫requestpart,叫请求的转发器接口。利用这个接口的forward的方法,可以实现请求的转发。然后呢,我们利用response http response的sendrect方法可以实现请求的重定向,我们要详细了解请求转发的流程是什么样的,请求重定向的流程是什么样的,并且对这两种来进行比较。这就是我们这块要学习的重点内容,以下内容都为重点。
01:00
看看怎么进行转发,我首先需要获取到这个requestpe接口,然后呢来调用它的发的方法进行转发就可以了,我们看一个请求转发的实例。呃,点HTML过来写两个边行。我去一个。Sub。我把这个请求的话,发这个,我来建一个。这个时候啊,我们可以这样建,我直接来建个什么呀,我直接来建一个so,终于可以这么写了啊,过来看我建这个so叫forward。
02:03
Solid。你看啊,Forward so,下一步your pattern改一下,改成forward so,它会自动的把这个配置加到我们的。Web文件里边再下一步,这是一个什么请求啊,超链接。Get请求吧,我只需要重写get方法就可以了,不需要加上这个super class finish,诶,这就是我们,So,这是什么?LIS帮我们自动生成的,使用就可以非常的简洁。好,再看一下配置文件,这呢。它自动的给我加上。Forward好过来我们首先说,诶,这是什么呀?这是forward。
03:00
当覆盖的方法。好了,先看这个请求是不是可以建立起close。打开。刷新发文没问题吧?好了,下面的话呢,我们就要来做请求的转发看。请求他转发先看,分为两步,第一步,调用http request的request。
04:01
获取request,获取请求转发器对象。Request this control。对象,然后呢,获取对象值,获取调用吧,调用这个方法值。需要转入,要转发的地址需要。传入要转发的地址。二、调用。TP service request啊,For我的方法为什么呀,传一个request跟response。进行请求的。本方,所以说从方法上看的话,没什么难的,那需要理解的地方很多,先看吧。
05:07
Request这是什么呀?是一个接口。等于request get request。Past OK pass地址减一个pass等于去哪呢?我还去一个,哎,我去一个has so,去这个地儿。好了。去的这个地儿啊,我来打上一个斜杠,小小什么意思啊?斜杠代表当前外部应用的根骨。写完,然后进行转发。Request forward request response了。
06:06
这么转?代码上看两行代码比较简单好了,这里边的话呢,我真的再写上一个test,新建一个。这个。Edit。OK,下一步。重写do get的方法过来好了,CTRLD。代行。我说呀,这是哪儿啊,这是。就是。大度爱的方法。
07:03
好写完写完之后的话呢,我们先看一下效果。好起来。刷新没毛病啊,我点一下,大家看我是不是先去的forward To Get跟然后完了去test service的这个do get这边看没啥。没啥,我怎么了,我发请求先到了forward的这个地儿,然后的话呢,转发没停下啊,直接又去的这个地儿,我们感觉这这有什么呀,没什么,好了,我们来对比对比,Send redirect,这个叫请求的重定向的这个so,我们来写一个solve叫。罗伊。看这这个呢。
08:06
二小写一下吧,CTRLC,因为我需要留它,然后这个也是覆盖度,盖的方法在这。落地。OK,写法这里面先写的是dict的方法。为啥啊,好吧,这块说直行。请求它重定向,这个名目前对我们来说没意义,大家只看代码就可以了,response.send我去OK,直接调用。直接调用response send方法。然后其中pass要。
09:14
红定向啊,重定向的地址,那就说没啥呀,Pass等于注意哈,我这个叫test,也是test。好,回来这里边我们再写一个。二这个叫追。看效果。
10:02
这个跟那个会有不同吗?回退刷新点它,我看是不是也是两个呀,诶起码从表面上看没啥不一样的,但是啊里边有很多不一样的,而且特别重要。好了,回来看,怎么就不一样了呢?我们先看表象啊。Forward一样是这个吧,看这这个地址是什么呀,是不是还是forward的呀?好了我回来刷新看dire,我地址栏不是dire了吧,我回来再看一遍。我点的这个。复制。看底下这个哈,底下这个点的是谁呀?是不是so,但是我后来这个地址变成什么了?不是变成taste了,这个地址栏发生变化了,而这个,而这个虽然说我去的目标也是那个test so,但是我这个地址栏是不是还是那个for so啊,诶,至关重要的一个区别出来了,我forward向服务器只发了一个请求,而direct向服务器发了两个请求。
11:33
怎么看呢?继续看它,打开开发者工具。看这儿。Network好了会退来看这个啊。Forward,你看只有一个请求,再看redirect。有两个请求,先把请求发到了solid,又把请求发到了test solid本质区别。
12:07
四请求的转发和偶影像我们今天上午讲不完了是吧,但是我把这个我们说一下啊,本质区别。其他的区别都是从这来的,也是区别。请求。的转发是只发出。纸。发出了一次。疑似请求,而定项同定向则发出了两次请求,类似于什么呢?类似于转发,类似于这样。
13:07
说呀,这个我落魄了是吧,没有钱了,我朝永良借钱。我们说是请求个转发,请求转发是吧,永良没钱,永良说啊。说我有钱,但他没钱啊,然后永良朝李俊借了500块钱给我了。这个时候我问大家,我发了几次请求啊?我只发了一次请求。永良同学还是很靠谱的啊,对吧?我说永良借钱,永良没钱,永良说老师我帮你解决。良这么说,老师,我来。搞定完了,我也不知道这个钱是谁的,反正这个钱是永良给我的好了,另外一个叫充天向我朝赵阳借钱,赵勇有钱是吧?我说赵阳借我点钱,赵阳说老师啊,我没钱,嗯,你去朝李俊直借吧,然后我去找李俊值呢,李俊直把钱借给我了,我发了,我发了几次请求啊,我发了两次请求,这个时候我就相当于丢了两次人是吧?哎,这就叫请求的重新项转发,看特点特点,具体特点来。
14:20
具体一我们发现一个什么,既然是只发了一次请求的话,你看本发这个地址栏是不是不变呢?地址栏就是初次请求的地址,地址栏不发生变化,看。地址栏。地址栏是初次。发出请求的地址。就是转发。请求的转发而请求的定价。请求的总。
15:06
定向重定重定向这个是什么呢?地址栏不再是初次发出的请求地址,这个时候什么了?这个时候地址栏发生变化了,地址栏。为最后响应的那个地址,虽然说我们看到这个结果是一样的,我把钱或许都介绍了,但是我方的请求是不一样的,一个是两次,一个是一次,这个是本质区别,那正是因为有这个区别,所以说才导致的以下品种不同,二。第二个区别,第二个区别,因为我第一个只发了一次请求,所以说在。
16:04
最终把。这个里边吧,中好了request请求,Request对象。在请求转发的情况下,在请求你这么说,请求转发在这最终这个service里边,最终这个service里边,这个是什么情况,这个里边。这个request和request对象和什么呢?和中转中。对,这那个request是同一个角同一个,而请求的对象则不是同一个对象。
17:05
是不是同一个能理解为什么是为,为什么不是吧,因为我我转发只发了一次请求,所以说是,而这是两次请求这个。不是好了,这个是不是我们怎么试出来呢?在这块我们讲过,我们讲过说呀,这个request有一个方法。要可以设置一个属性,写成一个,比方说写个name。写name行写name来写了abcde保存,如果是同一个request的话,那我在这块我就可以把这个属性给它获取出来,Sit out request.that attribute。那大家说这个获取是不是肯定能出来啊,是不是才放的呀,我才放的,那才出来,那有啥问题啊,CTRLCCTRL为它的M是它,好了这句话我复制一份。
18:14
C。好了,我到。电设生类这边我来看一下。这叫taste。嗯。好好,我同样C,我到啊,这就是目标了啊,那这里边的话呢,我也写这么一句话,两句话CTRLC,注意这个写上什么呢,这个的话呢,我叫呃,XYZMN。好吧,就是这里边儿的,看这个里边的。嗯,好,再看结果怎么样的,我回退,我刷新刷新看这个啊。
19:11
现来看这个时候的话呢,我方活的里边这个内幕是不是可以获取的很正常,怎么获取呢?因为我本身我自个儿放的。哪呢,我自个儿放的,我自个儿取就可以吧,因为是一次请求,所以说看这我在调这个方法的时候,我是不是把这个请求传到这个方的方法里边来,那我到目标这个test so,这个时候这个request跟这个request是一个,因为我只发了一次请求,所以说这里边这个值我还可以获取到。一次请求好了,再回来再刷新看看它这是个什么情况,我本身我在这里边,我能获取着吧,我在目标里边获取不着了,因为这是两个请求。
20:13
就像我跟我跟永良借钱是吧,我说永良,我说现在我有什么什么困难,比方说哎,我的手机坏了,我想买个手机。这样不好,这样好像是大人跟好像小孩跟大人要钱似的是吧,我说我手机没有话费了,然后帮我交100块钱电话费。然后永良过去去找李俊值,说董老师那个电话费没钱了,他没钱之后跟我说,那你先借我吧,然后这个时候到李俊值这块啊,B均值,B均值知道哦,原来他是这样的啊,原因是这个原因,好了,现在的话呢,我跟赵莹说,我也是这么说的,然后的话呢,我到了这个目标,到立俊值那块,这个时候立俊值,如果我要是不说的话,立俊值知道我的运营是什么吗?不知道吧,因为我的信息给了赵莹,赵莹没有跟这个小丽之间有过任何的这个关联,我又发了一个请求,李俊志,不知道为什么。
21:11
这是两个请求,这是他们之间最最本质的两个区别。这是最最本质的两个,但是其他的话呢,还有一些区别,这个等我们到讲。GSPGSP的时候,我们还会翻过头来来说这个转发和重电项,这两个service之间转发转化和重叠项啊,我们意思意义并不是特别的大,我们在讲GSP的时候,我们还会来说它,那个时候MC设计MVC,这个设计模式的本质就是请求的转发,没有请求转发的话,你MVC就出不来。我再说一遍啊,没有请求转发的话,我们整个Java的这个JA的这个体系架构我就出不来,就是说我在service里边获取这个信息,在页面上根本就无法显示,本质上都是因,都是因为有它这个我们在讲GSP的时候,我们还会具体来进行说明,那通过JSP进行说明来。
22:17
我们写一个a.BFD。嗯。再写一个b.JSP。嗯。好了,这点这面呢,我们写一行字。H4AAA。Eight。你说C点之面一线行字B。好,来一个CCC。
23:07
好,现在呢,我在a.JSP里边啊,我来写个超链接。C我要arrive到,比方说我要去B感觉SG。但是呢,b.GSP里边我写一个To B啊这个很简单啊,A发一个超链接去B。这里边呢,我们要写代码。有什么代码啊,我们说写这个请求转发和重定向的代码,一稿请求转发的还记得怎么写吧,request.set request。
24:02
下边的11点填的request response request都是隐含对象,我可以直接用,这边我怎么了,我直接进行了一个转发,好看一下。好,注意看我点它。这个是哪个页面呢?这是B页面有。我这个是。过了啊。这是PB,这个是CCC。你错了,这就是第2P吧,B在这呢,我再刷一遍。你回来来看哈,这点JP点这个超链接是去页面的吧,页面里边进行了一个转发吧,来看我点一下C这个页面吧,而且。
25:03
而且我们发现这个地址栏并不发生变化。好了,我们今天上午说的是一样的,再回来。再说。二要请求他重定向response点。Send去哪呢,点?啊。会对刷新点它是不是来西了呀,这发生变化了吧,我们上午讲到它们有一个重大的区别的一个。我如果要是用转发的话,我实际上由A到C是不是只发了一个请求。那就意味着他是一个。好吧,然要是由由A到C呢,要是同镜项的话,我是两个请求吧,好了,一个请求两个请求,于是的话呢,我们看我们想让at t reg里边的这个request里边放的这个属性在at t里边能够显示怎么办?
26:22
啊。看哈,哎是这个我要这样写的话,怎么个不行,为什么呢?为什么呢?因为当我刷新这个页面的时候,我只有我刷新这个页面的话,这个代码才会执行吧,好吧,这个时候会把它放里边去,但是我这个页面一旦要是回来的话,意味着什么呀,意味着我这个request已经死了,我只有我点这个请求的时,我点这个超链接的时候,是不是一个新的请求啊,所以说。拿不到怎么能,怎么能够拿到呢?我直接在这个页面不做停留,直接怎么了,直接进行转发,At request please,我去的是atp.two.jt。
27:18
小。帮我的request response。很好,结束。好了,这么写的再看。对,你看着哈,attr1.dsp我跑一下。这个还是有问题。又没改呀。2221改啊好吧,这改成一一。你看。这两个页面的话呢,实际上也不一样,为什么呀?一那个页面里面是不是有超链接啥的呀,我刷新一下大家看二吧,那我显示的是一吧,这个时候这个属性我是不是可以获取着啊,能吧,就是因为。
28:11
因为我请求一的时候,他是不是直接给我转到第二个页面来,这个时候至始至终都是。一个请求自始至终都是一个请求,所以说的话呢,我可以直接在二这个页面获取到一页面请求域里边的这个属性,就是跟。请求转发相结合之后的结果,这个是我们后边要讲的MVC设计模式的本质。好,听完了之后的话呢,我们翻过头来,我们再来看一下这个请求的这种定向和转发。一会我们都已经讲过了啊,我们来看看这个图。这个是请求转发的过程。
29:05
浏览器向服务器发一个请求,服务器第一次创建这个so的时候的话呢,第一次访问这个so,创建这个so,然后创建request跟response,用service方法把request response传给这个,然后获取什么请求信息,响应信息,然后返回,注意我返回的是。服务器,那么浏览器发现一个什么呀,他发了一个方管了,这个时候不做停留,继续发出第二个请求,所以说你看说你看在我发第二个请求的时候,我这个浏览器是不是你没关系啊,我只发了一次请求,然后的话呢,继续重复刚才那个过程,然后把这个响应给回来,要请求转发的示意图。我们再来看平定向的示意图,看球这个过程是一样的,看这返回了啊,我们看到看到这个时候的话呢,我要读取这个详信息,因为你用的是不是response啊,好了可以读取发现,诶,它是一个redirect,于是的话呢,告诉浏览器你还得再发一遍,然后浏览器又发了一遍,所以说这个是。
30:23
两次,请求大家可以把这个图呢认真的看一遍,这是他们之间的本质区别。我们看们的比较比较。上午的话呢,我们讲了他们之间的本质区别是。多少张?哎,请求转发和重定向的本质区别就在于请求只发了一次请求,而重定向是发了两次请求,所以说具体的话有两个,第一个你转发地址栏多次发生了一个地址,而重庆项地址栏的变化两次嘛。
31:08
八转发一个request,这个是两个request,实际上的话呢,还有还有区别,还有一个区别,这个区别的话呢,也比较重大啊三。第三个我们需要注意的是,对于请求转发而言。有转发只能转发到,只能转发到当前web应用,应用的资源就只能够转发给当前外部应用的资源,就你想出去出去转发嘛,当前外部应用的你自个跟自个转。
32:00
比方说我朝这个永良去借钱的话,永良要再借的话,他一定是朝自己认识的人借。不认识的话就搞不定好了。而对于同定项。宇宙C、宇宙看什么呀?可以重定向到任何资源。可以从定向,从定向报任何资源,就是他们之间的一个区别,它可以同定向到任何资源,那我们看一下。上午讲的hello跟hello,应该是这两个吧。两个人没到场。那我们就用这个加来说吧,来close这个留着啊,用这个ABC来说。
33:01
去的是B点加P,注意看这块,我要是进行重镜像的话,可以这么写response点的。然后HTTP。3w.sa5.com,这是可以的,好看一下。是不是出来了,我们整个这个页面了呀,诶它可以转发到任何资源。而我们的绿。重定向同它可以重定向的任何资源,好吧,而这个。转发呢,只能是内部资源来写一个CTRCCTR,你想是吧,他都把这个request PU算上了,所以说你想出是出不去的。
34:06
C我写给大家看一眼过来。对担心是不是根本就找不着,这个在哪儿找啊,这不是在这这30里面去找他呀,没有吗。再来。正是因为他的话,所以说还有一个第四个区别。四。第四个是对于请求的转发而言,斜杠代表的是当前外保应用的根母,所以说这个时候你写的这个斜杠是没有问题的来看。这个行哈同学,斜杠,这个斜杠指的是当前外壳应用下的c.GP我们刚才已经看过了,而对于重定向呢。
35:05
它代表的是当前web站点的目录。斜杠代表的是当前web站点的分母不一样,当前外边站点的啥意思呢?啊,什么叫站点的8989啊,后边是当前不应用,于是呢,回来我把这个打开。这个写个啊保存你过来一看就知道了,回退刷新这点哪了,这不是跑按点上面去找这C点加1P呢,没有这一个四零。以上呢,就是我们讲到的请求和转发具体的四个区别,这四个区别必须得非常清楚。
36:05
而且对于转发和重定向,在我们预对象存储这块的这个特点,特别是在进行转发的时候,我在A页面放一个属性,A页面能够取出来,是因为我的A页面里边直接写代码转发到。页面。这个也必须非常清楚,在这个基础上,我们可以来尝试来讲MVC设计模式。
我来说两句