00:01
好,我们说完了请求,说完了响应,下面我们就来看一个很重要的内容,请求转发。与重定向,其实请求转发我们之前啊用了一次了,记不记得我们用那个request forward方法呀。那么request啊,Activity request可以获取到。Request dispat对象的。那么这个对象里边的方法就是完成请求转发呢?而我们response里边有个方法叫send redirect。Send发送redirect。重定向啊,那么这个方法可以完成重定向功能,什么是请求转发,什么是重定向呢?我们先简单看一下这个图。大家看啊。
01:01
我这里边儿有个请求。我这儿发出一个请求,要请求服务器,服务器里边有两个资源,一个是资源,一个是资源二,那么我发出的请求是要请求访问资源一,但资源一又要访问资源二。那么资源一向资源二进行跳转,那么跳转的方式有两种,一种方式就是请求转发,一种方式是重定向。所以你首先要清楚啊,我们请求转发和重定向解决的是一个怎么样的问题,就是我发出的请求访问的是资源一,但是资源一又需要访问资源二。那么由资源一到资源二这个。跳转。方式,我们有请求转发和重定向这两种。那具体什么是请求转发,什么是重定向呢?
02:03
咱们这样啊,我给大家画个图。嗯。这样咱们把服务器停了啊。没没开是吧。我不知道咱们大家这个办过一些,到政府办过一些手续没有啊,以前的时候啊。呃,前几年前几年的时候呢,你比如说你要去开家公司。要开一家公司,需要很多部门。盖章。所以你需要跑很多木门。今天你跑到。是吧,这个什么企业管理局。企业管理局给你盖完章了,然后呢,他说让你到工商局。啊,到工商局了,这个工商局说,哎,这个这个办事人不在。
03:01
你下午再来吧,你下午来了呀,这办事这个走了,你明天来吧,啊你你跑很多次,最后工商局的章终于也盖完了,然后你又要跑。税务局跑税务局,跑完地税跑国税,哎呀,各种各样的章需要你盖,很麻烦。关键问题是你要能到那顺利的盖了章也简单,问题就是没那么顺利,不是这个不在,就是那个不在,要么就是这种。不符不符合人家的规定,你需要重新再改,反正是很麻烦。所以呢,政府为了提升形象,为了方便老百姓办事,所以呢。前几年成立了什么成立了。一种机构叫便民服务中心。
04:00
当然了,现在很多地方啊,已经改了,这个不叫便民服务中心了,换成其他名字了,我们就不管了,我们还说是便民服务中心,这便民服务中心它里边有什么东西呢?有各种部门,各种行政管理部门,它都在这一个地方,不同的部门开了不同的窗口。比如说。这是便民服务中心。然后呢?哎。这是。窗口。这样吧。这是一个窗口,比如这是企业管理局。诶,这是什么工商局。这是国税局。这是地税局,这是什么什么局,这是什么什么局等等等等。是吧,很多窗口。
05:13
那等等啊,咱们就。不说了。比如说啊。你要办手续了。这个是。一号窗口。这是一号窗口。Yeah。这是一号窗口,这是二号窗口,三号四号等等,这是。十号伤口。那么你来这儿要办手续了?要办手续,这个手续需要这十个窗口。都要盖章。有两种方式。
06:01
有两种方式,一种方式是什么呢?你把那个表格递给一号窗口了。一号伤口一看没问题,把章给你盖了,然后呢。又给你了。然后你拿着这个东西呢,又跑到二号窗口,给了二号窗口,二号窗口呢一看没问题,然后呢,把章一盖,又给了你了。你到三号窗口。明白吧,等等等等等等。好,这是一种方式,那我问大家。你。一共跑了几个窗口啊?是不是十个窗口你提交了几次请求,你拿着表格,那是不是就是提交请求的呀,让人给你盖章的呀,提交了几次请求。提交了十次请求,获得了几次响应,获得了十次响应。
07:05
这是一种方式。对吧,还有这这这政府啊,感觉这样对于老百姓来说还是不方便。于是怎么样呢?又换来一种工作思路。这老百姓啊,见到一号窗口。提交了,哎,我要开个公司是吧,你看这个手续,你给我盖个章。好,服务态度很好啊。您说好先生啊,您呢。来吧,坐到这儿,这是沙发,让你,你坐到沙发上等吧,那么你一会儿看大屏幕,大屏幕上给你写着呢,啊,让你来领表格,你就来就行了。诶,这人好了,把表格往那儿一递,这人小人是吧?啊,这人就坐在这儿等了。等等等等,等了一会儿。
08:03
这边。屏幕大屏幕上显示的。张三,请到十号窗口。拿你的手续,哎,这张三一看我刚才递过去是是不是给一号窗口递的请求啊,现在让跑到十号窗口拿手续了。给我一拿手续呀,呵,怎么了?这这章全部盖完了。我的手续办完了,公司可以开了诶。这这这这就是好啊,很方便是不是。那么。我问问大家。啊,这个张三这个人提交了几次请求啊。是不是就提交这一次请求?获得了几次响应啊,是不是就这一次响应。要说的事是不是都办了,那他怎么就办了呢?我提交给一号窗口警去了,怎么十号窗口就拿到了呢?
09:03
哎,他是这样的。他把你的请求啊,你提到这请求怎么样,一号双手盖完了,紧接着。他把你的材料是不是给了二号窗口了。让二号窗口一审没问题。给了三号,三号给四号,四号给五号,五号给六号。最后是不是给了十号窗口,十号窗口盖完了直接在屏幕上显示,张三到十号窗口拿手续。你就提交了一次请求,获得了一次响应,是不是所有事儿全部办完了?那么这是一种方式。这两种方式。就是我们所说的。两种请求的。跳转方式,那么第一种这种红色的标的,这个第一种这是什么?这个叫做重定向。
10:06
而这个蓝的标的这个叫做请求转发。什么意思呢?你的请求,你提交这个请求给了一号,你访问你要提交请求,你请求是不是一号资源呢?一号资源将你的请求又转发给了。二号二号转开,三号等等呢,一直转到了十号,最终十号窗口给出你响应,这叫请求转发,内部给他转过去的,所以请求转发也称为服务器内跳转。请求转发。也称为服务器内跳转。
11:07
那。这种呢?叫重定向,怎么说就重定向了呢?我提交一个请求,他给了我一个响应,然后我又提交一个请求,就相当于你你这请求是不是重新确定了一次你请求的方向啊。又确定一次请求方向,又确定一次请求方向,又确定一次请求方向,所以这个叫重定向。重定向也称为。服务器Y跳转,你看看哪一次是不是有个请求,是不是叫给个响应,这个请求是不是就出来了。跳到服务器外边了,然再提交个请求,再来个响应,他叫。
12:00
服务器外跳转。OK,这是给大家画的这样一个图啊啊这这这这画的这个东西不要回头,你看这个图的时候忘了它是什么了啊,我给你写到这儿,这什么啊,休息这个。是吧,啊,顾客休息去,我给你写到这啊,免得回头你画的这是干嘛的?OK,我把这个图保存一下,这是。请求转发与重。定向。示意图啊。那好了。我们现在知道这个意思了,现在再来看这个图就应该明白了,大家看啊,我请求我提交一个请求,现在我要访问资源一。
13:04
资源一要访问资源二直接将你的请求。给了。资源二了。直接将你的请求对象传递给了资源二。然后资源二在运算结束以后会将响应发送给客户端浏览器。所以用户提交了几次请求,一次请求获得了几次响应,一次响应。而重对象呢?我要访问资源一。提交请求访问资源一,资源一要访问资源二,你看我这画的是不是虚线呢?他要访问资源二,那怎么访问呢?他并没有将请求直接给了Z2,而是。给出一次响应。给客户端浏览器一次响应,然后又进行了一次请求。
14:01
然后资源二给出响应,你注意对于客户端来说,对于我们用户来说,我们认为。就提交了一次请求。这一次响应用户感知不到,这一次请求也是浏览器自动发出的。用户也感知不到。对于用户来说,他感觉我就提交了一次请求,获得了一次响应。但实际上。浏览器是提交了两次请求,获得了两次响应。他已经出了服务器了,又进来的,所以这个叫服务器外跳转,这个叫服务器内跳转。就是那么这两个会引发一个什么问题。它会引发一个什么问题呢?
15:00
那你看一下。如果说。我使用的是请求转发,大家来看看我的请求到了资源一,资源一,但是资源一什么?我们现在来说资源一就是solid。这就是solid,我到这个solid,这个solid接收到这个请求,会把这个请求对象直接给了。资源二,也就是说这个资源二里边能够获取到用户提交请求中的数据,为什么你的请求根本就没断呢?他把请求对象直接给了资源二了,资源二拿到这个对象以后,这个对象里边什么东西都有啊,对不对,请求参数。你的预属性都有,我资源二里边可以直接访问请求用户提交请求中的数据。但是。你看这个资源二中能获取到。用户提交请求中的数据吗?不能,为什么一次请求一次响应。
16:02
结束了。当到达资源二之前,这个请求对象就已经被销毁了。没了,那第二次请求和第一次请求根本就没关系。因为我们说了HTTP请求是什么。GDP协议是什么?是无状态协议,第二次请求和第一次请求之间根本就没有何关系。所以资源二中是无法获取到用户提交请求中的数据的。这是很重要的一点区别啊,我们一会儿写程序给大家演示一下,诶现在你先从意识上理解一下,什么是请求转发,什么是重定向。
我来说两句