码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈重定向和转发(理论篇)

时间:2015-05-28 16:15:41      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:

  自己最近做项目的时候,发现当我由一个页面向另一个页面发送request请求的时候,发现在后台是拿不到这个请求数据的,自己就觉得很奇怪,明明已经向后台发送了数据,怎么会拿不到呢?

  向同学询问,经同学指点,知道了转发和重定向是有区别的。那么两者的区别是什么呢?

 两者的简介

  无论是转发还是重定向,都是实现页面跳转的方式:

  重定向:重定向行为是做了两次请求,及产生了两个request对象,重定向会导致request对象信息丢失。

  转发:转发做了一次请求, 浏览器的地址栏一直是第一次请求的地址。转发是服务器内部request/response控制权的移交。也就是转发后,浏览地址内容不变,转发可以以request作用域进行数据的传递。 

 ?  具体讲解工作过程

  重定向是客户端的行为,其含义是第一个页面通知浏览器发送一个新的页面请求,因此,当你使用重定向的时候,浏览器中显示的url即地址会变成新页面的url,与此同时,重定向的方式产生一个新的请求,故而经过一次重定向后,request内的对象将不能使用,也就是其内部对象将会失效。

  不同于重定向,转发是服务器行为,服务端进行处理的时候将使用其内部的方法进行目标页面的调用,新的页面将继续处理同一个请求,而这个过程是不会被浏览器知道的。并且转发不同于重定向的一点在于转发不会改变url,也就是说能够保持request内的对象。

并且就实现页面的跳转的方式来看,转发的速率是大于重定向的。

  之前自己为了实现将页面的请求发送到另一个页面,在试了重定向不可以的情况下,将变量放到了session等作用域,这样明显就是增大了变量的作用域,转发似乎更加符合我们最真实的情况。

 ?  区别

  转发:实际上只有一次请求,而重定向实际上产生了两次请求。

  转发的时候浏览器的地址不改变,而重定向时浏览器的上的网址改变。

 小结

 这些暂时是自己的一些理解,这些只是自己理论上的理解,实战篇请持续关注博客~

 

浅谈重定向和转发(理论篇)

标签:

原文地址:http://blog.csdn.net/u010955843/article/details/46124235

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!