【转】页面跳转Transfer与Redirect的区别你知道吗?
一 前言
关于页面跳转的方式常用的应该就是,链接跳转,js跳转,Server.Tranfser和Response.Redirect 这几种,可是在Tranfser与Redirect之间用哪种更好(本文只讨论这两种),以及它们之间的区别各位又是否深究过呢?至少我是没有,对此也深入研究了一下,特意分享给大家 如有不对之处还望大家指出。
二 Transfer与Redirect区别
2.1 Transfer跳转方式只能在同一站内跳转不能跨站点,当以下代码执行时会抛出异常,而用Redirect方法则能正常跳转
Server.Transfer("http://www.baidu.com");

2.2 Transfer跳转URL地址不会改变,而用Redirect方式URL则会显示跳转后的URL地址
我默认的地址是Index.aspx页面
2.2.1Transfer:

2.2.2Redirect :

2.3 Transfer 可以将上一页面的Form表单数据传递到跳转页面,而Redirect则不行
在Index页面Form表单中添加一个textbox,我们来看看两者的区别
<input id="" name="txtTransfer" type="text" value=""/>
Transfer:

当然你可以选择不将上一页面的表单内容带至跳转页面多加一个参数即可
//取消传递表单数据
Server.Transfer("Transfer.aspx",false);
Redirect:

Transfer跳转客户端只用发一次请求就可以跳转而Redirect客户端则需要两次请求才成完成跳转
接下来就深入的看看这两种 方法的差别吧
三 原理解析请次数的区别
Transfer 为什么与Redirect的跳转过程到底是有什么样的区别呢,我们先看下用Fiddler抓到的请求
Transfer

Redirect:

然后展开Redirect请求中状态码为302的Http请求详情如下:

从上面的图可以看出Transfer在客户端发出跳转请求后,在服务端就直接发生了跳转并直接响应了跳转页的内容。
而Redirect方法客户端则发出了两次请求步骤如下
1 客户端发出跳转请求,服务端接收后 先响应302的状态码 并带上跳转的URL
2 客户端接收302状态码+URL后再次向服务端请求跳转页面的内容 步骤如下图

通过上面的两张图可以很明显的知道Transfer与Redirect在请求上的区别,Transfer比Redirect少了一次Http请求所以在资源消耗,服务器压力上来说Transfer是略胜一筹的
当然这两种方法并没有谁好谁坏的区别,我相信存在必然合理,两者都有各自的优势。本文目的只是对两种跳转方式的区别做一个详解 仅此而以。
四 总结
在生活与工作中要善于抓住细节,多思考多实践,程序员应该要有抱根问底的习惯,做一个有思想的程序员,又干掉自己的一个盲区!希望本文能给您带来一点点收获!
注:转自http://www.cnblogs.com/zery/p/3632826.html
【转】页面跳转Transfer与Redirect的区别你知道吗?的更多相关文章
- 页面跳转Transfer与Redirect的区别你知道吗?
一 前言 关于页面跳转的方式常用的应该就是,链接跳转,js跳转,Server.Tranfser和Response.Redirect 这几种,可是在Tranfser与Redirect之间用哪种更好(本文 ...
- aspx在页面跳转(Response.Redirect)时丢失session问题及解决办法
[问题描述] 假设a.aspx.cs页面保存有Session["empid"]="3",当a.aspx.cs通过Response.Redirect(" ...
- Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面
一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填 ...
- ASP.NET MVC之"重定向/页面跳转"(关键词RedirectToAction,Redirect)
MVC5 API(官方) 1.RedirectToRouteResult RedirectToAction(string actionName); RedirectToRouteResult Redi ...
- Server.Transfer,Response.Redirect用法点睛
Server.Transfer,Response.Redirect的区别 如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个 ...
- 页面跳转 Server.Transfer和 Response.Redirect的区别
1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...
- 自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')
利用PHP的header()函数,可以实现页面跳转,如 header("Location: " . $url); 但它有个缺点,一旦HTTP报头块已经发送,就不能使用 header ...
- web设计页面跳转的方法
一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx"); 2. 利用url地址打 ...
- 总结asp.net页面跳转
ASP.NET页面跳转相关知识 一.<a>标签 1. <a href=”test.aspx”></a> 2. 这是最常见的一种转向方法; eg: < ...
随机推荐
- 运动历史图(MHI)——Motion History Image
MHI最初是由Bobick 和 Davis提出的,在此之前,Bobick 和 Davis 首先提出了二值的运动能量图(Motion Energy Image,MEI),通过描述物体如何移动和运动在空间 ...
- List-ApI及详解
1.API : add(Object o) remove(Object o) clear() indexOf(Object o) get(int i) size() iterator() isEmpt ...
- 【 D3.js 入门系列 --- 0 】 简介和安装
D3的全称是(Data-Driven Documents),顾名思义可以知道是一个关于数据驱动的文档的javascript类库.如果你不知道什么是javascript,请先学习javascript的相 ...
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...
- SQL Server用户自定义函数
用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统 函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行.在 SQL Server 中根据函数 ...
- 计算2的N次方
总时间限制: 1000ms 内存限制: 65536kB 描述 任意给定一个正整数N(N<=100),计算2的n次方的值. 输入 输入一个正整数N. 输出 输出2的N次方的值. 样例输入 5 ...
- HDU-5536 Chip Factory (字典树)
题目大意:给n个数,编号为1~n,取三个编号不同的数,使表达式(a+b)^c的值最大. 题目分析:将这n个数按二进制位建立一棵trie.枚举i.j的和,查询亦或最大值,但在查询之前要把i.j在trie ...
- Android dip(dp) 与 sp的自适应问题
本文转载于:http://www.oschina.net/question/272860_70761 今天碰到的一个问题,感觉应该其他人也会碰到,拿来分享一下. 我们都知道android在开发配置界面 ...
- springMvc源码学习之:spirngMvc的拦截器使用
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- java打包压缩文件
package com.it.simple.util; import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream ...