避免重定向java java重定向方法有哪些_重定向和转发的区别


最近学习一下java中以前没有理解的太清楚的概念原理。

怎么能比较好的理解记忆呢。

打算通过比喻,和生活中已经知道的事情进行连接等方法来实现。

恰好最近读了高效学习方法这本书,书中记载的内容跟我的想法一致,且有一定的理论技巧,所以刚好一用。

学以致用。

昨天看的知识点是java里面的servlet的重定向和请求转发。

看看怎么进行理解记忆。

下面是我根据教材里面讲的具体内容,理解了以后进行的记忆拓展方面的方法总结。

---理解 记忆

主要目的是重定向和请求转发的概念和原理。

从中文命名出发去理解记忆。----重定向。

重是重新,再的一次。

既然有“重”“再”,那就有第一次定向。

重定向实在第一次定向的基础上再定向一次。

定向是什么意思呢。

从中文意思上说就是定下来方向。

用生活中的必须来说比如要去一个地方,原来向东走,现在向西走,就是重定向。

用工作中的抽象事情比喻来说,比如公司的战略,原来是做外包公司,现在向做产品,这也是重定向。

而对servlet的重定向如何理解呢。

Servlet的“向”是指URL,也就是通俗说的网址。

定向就是指确定指向哪个URL(网址)。

重定向就是在指定了一次URL(网址)之后,再指定一个新的URL(网址)。

具体的细节(原理)是你(客户端)在浏览器中指定(也就是输入)一个网址,按回车键后,浏览器向服务器端发出第一次请求(request),请求到了服务器端,服务器派了一个servlet(servlet1)进行应对。Servlet可以理解为服务器端的可以提供一定服务的服务员。在servlet1的最后,通常是返回客户端就行,但是这个servlet不想让自己处理的结果被人看见,于是在最后偷偷的进行了重定向,也就是重新指定了一个URL(网址)。所以当回到客户端,客户端马不停蹄的马上把新的URL(地址)写入浏览器地址栏,然后又向服务器发出一次请求。这时服务器派一个新的服务员servlet2来接待这次请求,然后返回相应的内容到客户端,重定向才算结束。

  • 延申思考

重定向如果指向跟第一次请求一样的地址,则重定向之后发生什么情况?因为同样的地址,同样的请求,意味着服务器端会提供同样的服务,而这个服务会重定向,所以会循环下去?就像你去一个餐厅点菜,你点一个西红柿炒鸡蛋(请求),厨房对应的servlet就是重定做一个重定向处理。也就是厨师会在厨房给你自动发来点一个点西红柿炒鸡蛋的URL(重定向)。这样相当于你重复了叫了一下“来一个西红柿炒鸡蛋”,然后这个请求就发到厨房,厨房仍然会在给你发一个重定向,相当于重复了叫了一下“来一个西红柿炒鸡蛋”,然后这个请求就发到厨房。。。。。系统就这样死了吧???

如果你第一次叫了西红柿炒鸡蛋,服务员给你重定向为烧茄子,最后上的会是烧茄子,你的西红柿炒鸡蛋会被忘记,好像没有发生一样。也就是第二次请求发生后,第一次请求的内容不会被记住。

从中文命名出发去理解记忆。----请求转发。

请求转发就是请求来到了服务器端,相应的servlet1接待后,又进行了转发,转发给另一个servlet2,让他也处理一下。

就好像你在饭店点了一个西红柿炒鸡蛋,这个下单到达厨房,一个服务员炒了鸡蛋,然后请求转发给另一个服务员,这个服务员吵了西红柿然后把鸡蛋放到西红柿里面,做成西红柿炒鸡蛋,然后给你送上菜。

上面概念和原理应该明白了吧。

根据上面的概念和原理的理解,很容易知道其中的区别。

  • 重定向进行了第二次定向,而请求转发进行了一次定向。因为请求来回是花时间的,所以重定向会更花点时间。而请求转发因为只进行了一次定向,也就是访问了一次服务器,所以时间相对比较短。
  • 重定向的地址通常发生了变化,而请求转发的地址不会发生变化。

总结

本文通过对重定向和定向分发进行比喻,拓展了知识和现实生活(已经形成的模型)之间的联系,形成了脑中网络神经的连接,促进了理解和记忆。

把这个内容讲给不懂的人,更容易被理解和接受。

当然,在连接的一致性上,请求和下单,客人和厨房服务等的连接还有一些不一致的地方,这个是需要不断完善的。

还有就是因为对上下游(上下文)的内容书中没有详细的记述,也还没有时间进行其他书的阅读,所以在应用场景,应用层面的理解不足。

后面要想更深刻理解这两个概念和原理,就需要在上下游(此概念产生的来龙去脉)和应用层面上再下功夫。