00:01
那么,它们到底有什么区别呢?下边我们就来看一下它的区别,这样啊,这个代码。就注射掉了。这个也注释掉了。我现在先用谁呢?先用forward先,你注意啊,我们已经分析出来,它的主要区别集中在响应对象上,所以我们就拿响应来分析了。响应。response.get。Out。然后out点。Print。喷的什么,我这儿写上一句话啊,我这儿写上一句话,写什么呢,这个。
01:11
Forward。这样这个写上。Some。Forward之前这个呢之后。之前之后。这儿呢,我们也给他加上。Response get。Writer。Out out。
02:03
Out点。Print。Out print print什么呢?这样我们print啊。我print就是。So。Data。我加上他这个,大家知道这是这是什么,这是我们的。在IL里边它是换行嘛,是吧,我这都加上这个换行。我都加上了啊。好,看一下会出现什么情况。那么。
03:02
我这这里啊,我就直接刷新了,我在这儿直接刷新它。直接刷新,我们看页面有什么变化。走。诶。Other br。很有意思啊。怎么了,这个other。光有他这这这个数据是不是没有啊。对不对,他没有。有点意思啊,这数据跑哪去了呢?再看。Include。Include。好,重新发布了。
04:00
刷新走。看到没?在这儿这是冒号啊,这那个冒号,呃,中文的它里边又又出现乱码了。呃,这样这个这个这个把这个冒号给它改了。我们现在不用管那个。乱码的问题啊。还有哪?就这是吧。After。啊。我要直接刷新。你看这是forward。Before是吧?紧接着other subject data,紧接着又是some subject for,这是after,诶,这看来这个forward和include就是不一样,运行结果就是不一样,那怎么回事呢?诶,我们来说啊。
05:15
Forward forward是什么意思?向前。他是向前的意思,那向前是什么呢?说明你这个请求还没有结束,没有结束意味着什么?意味着这个响应,你注意,这个response对象虽然有了,但我没有开启。这个流没开启,你注意对象有了,Response对象有了,但是标准输出流没有开启。所以有同学说这这这不是有吗?不错,你是往流里边放了,但是对于我response里边这个标准输入流,我连到客户端的,连到客户端浏览器的那个那个标准输入流还没有开启呢。
06:08
你这数据没有写到它里边,我留着没开。所以不行。所以写不进去。符号的时候写不进去那。为什么include就可以了呢?Include可以是因为他把这个瘤。已经开启了。什么意思?这样吧,我这样来说啊,方便一些。Include是。包含,他要把这个东西给他包含进来。那说明他这个请求已经完成了,他要除了完成自己的以外,他要把另外一个流给他包含进来。
07:04
把另外一个不是另外一个流,把另外这些数据给它包含到这个标准输出流里边,所以forward和它们两个的区别在哪,我给大家说区别在哪。这个就不加了啊。Forward。啊。Forward与include的区别主要表现在。标准输出流的开启时间。不同。Forward。
08:02
Forward这个单词表示的。意思是什么?是不是向前呐。说明。当前的请求还未结束,所以就不可能。还未结束,继续需要继续向前。所以就不可能。所以就。所以服务器吧,就不会。
09:03
在这里先打开。标准输出流。因为你的请求还没有结束呢,所以他就不给你打开这个输出流。所以此时写入到out中的数据。是不会。写入道。客户端浏览器中的。诶,这是forward。那呢?In这个单词。表示的意思是什么?包含说明当前的请求。
10:08
已经。结束。不仅。自己的。请求完成了,还要将其他数据包含到。自己的。啊,还要将其他数据包含到自己的。嗯,不仅自己的请求完成了。咱们怎么说这句话呢?说明当前的请求已经结束啊。
11:04
可以。不仅自己的请求完成了。还可以将。这这样这样写不好。说明当前的请求已经结束啊。可以对。客户端进行。响应了。那么。七。父亲。将自己的。数据写入到了标准输出流。还要将。
12:00
其他其他数据包含到自己的输出。六正。那写了这么多,到到到底什么意思啊?再说得明确一些。使用forward方法的。其标准输出流。还未开启。那这个呢。使用include方法的solid,其标准输出流怎么了?已经打开。
13:04
可以向其中写入数据了。可以向里边写数据了。所以这两个的区别在哪?就是输出流开启的时间不一样。那输出流大家想一下啊,在这开启了。而且在include这开启了,而且他把人家的包含到他那里边,所以响应是谁给出来的。是的,这个给的响应。对客户端的响应是由。使用include。方法的萨里给出的,那这呢。
14:11
对客户端的响应,你注意它的输出流还没开启呢,不可能是他吧,是不是,所以肯定不是实用。Forward方法的。给出的,而是谁呀?而是谁,我只能说不是他给出的那是谁,那有可能那是他的下一个是吧,那他的下一个。他又。怎么了?他又forward了?那所以他只能是,只能说肯定不是他。
15:03
肯定不是他啊,那这个什么意思呢?我给大家画了两个图,你看一下。这是forward。当。用户提交请求以后,你请求谁?Some STEM把请求。是不是转给他了?继续向前嘛,Forward向前,然后响应,响应流是在这儿开的,所以给响应是阿萨给的响应。是的。发出请求。到萨姆斯里,萨姆so里把它的内容是不是包含进来了,输出流是在这儿就开启了,所以给出响应是哪给的?是Sam给的。是Sam给的。而这个包含。
16:02
把它包含到这里边。最后这个响应由他给出,那么这个过程是谁完成的?是那个增强application IDP response完成的。所以。大家看看你既然这forward,你用forward的话流还没开启,所以你写到这儿的东西是不是根本没有不管用啊。而我们写到哪儿啊,我们用include的话。是不是都给它包含进来了,你看看我之前的,现在有之前的,紧接着我是把other里边数据给它包含进来了。所以你看看的包含进来了。报完进来以后还得再回来呀,你注意,他执行完了还得再回来,回到这儿了。
17:00
这又回到这儿了,包含到哪,就包含到这个位置,再回到这儿,回到这儿,这after就又出来了。After。这就是他的执行过程,所以就跟这个图一样啊,你看。这里边儿放数据,然后把它包含进来,然后再回来就响应,还得再回来。所以。这个。这个需要注意的是什么?根据我们写的这个最后得出的结论。得出的结论是什么?写上。结论。在使用forward。进行。请求转发时。那么使用forward的。
18:06
不应向。这个。Response中写入数据。这就得出的结论不影响他写入数据。若要。写入数据则应使用什么?是不是include进行?转发对不对?这是我们最终得出的这个结论。好了,这这这BR现在不起作用是吧,好说不起作用,我们给它加上M,加上M就好了。
19:06
Response content type text。HTML。嗯。好。没问题吧,诶从这也让大家能看到这个M加这个麦干嘛的,就是让告诉浏览器。我的这个内容你按照什么来解析?你按照什么来解析调你的哪个解析程序来解析它。你肯定要调用它呀,是不是把它当成HTML来处理了,或者我们这样看一下它。
20:04
你看着啊,打开watch。刷新。大家看这响应你看到没,这就是响应的内容。我们写到写到这儿的东西,写到想象里边的东西就写到这儿了,这是想象题啊。就写到它里边,对于这个内容如何进行解析,对于它如何进行解析。那么你是通过这个麦来告诉浏览器的,我现在把它注释掉。再重新发布。好。停掉。我刷新啊。大家看内容是一模一样。
21:01
只不过浏览器上显示的不一样。哪儿的区别是不是就是这个东西不一样啊,对它的解析是不是不一样啊。你加上他了?那么它就会按照iml进行解析它。就这样一个意思啊,正好给给大家把这个也就说了好。那就这了。那么。Forward它的区别。主要在哪儿?留的开启时间不一样,诶刚才我们说的这个啊。Include,刚才说了include是是是include的时候。他的响应用的谁呀。啊,那个想用的是谁。这儿的小羊用的谁?这样吧。让大家再看一下啊,加深一下印象,我现在用的是include啊,我根据我们刚才理解的,我们就知道include这要做一个包含,叫做合并,所以肯定用的是。
22:13
装饰者对不对?这个不看了啊。刷新。是不是他用的装饰者呀?对不对,而如果我这儿。改成。Forward。刷新。你看。这个对象我们刚才看到了,和some里边对象是同一个。
23:02
是同一个对象。对象在这儿就创建了,我在这儿是直接拿来用的,但不同的是什么,留在这儿没开。标准输出流在这儿没开,在这儿开启了。OK。Forward include的区别。就说到这儿。
我来说两句