一 前言

  关于页面跳转的方式常用的应该就是,链接跳转,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是略胜一筹的

当然这两种方法并没有谁好谁坏的区别,我相信存在必然合理,两者都有各自的优势。本文目的只是对两种跳转方式的区别做一个详解 仅此而以。

四   总结

  在生活与工作中要善于抓住细节,多思考多实践,程序员应该要有抱根问底的习惯,做一个有思想的程序员,又干掉自己的一个盲区!希望本文能给您带来一点点收获!

  本人水平有限如有理解不对之处还望指出~谢谢

  如果您觉得本文有给您带来一点收获,不妨点个推荐,为我的付出支持一下,谢谢~

  如果希望在技术的道路上能有更多的朋友,那就关注下我吧,让我们一起在技术的路上奔跑

页面跳转Transfer与Redirect的区别你知道吗?的更多相关文章

  1. 【转】页面跳转Transfer与Redirect的区别你知道吗?

    一 前言 关于页面跳转的方式常用的应该就是,链接跳转,js跳转,Server.Tranfser和Response.Redirect 这几种,可是在Tranfser与Redirect之间用哪种更好(本文 ...

  2. Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

    一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填 ...

  3. aspx在页面跳转(Response.Redirect)时丢失session问题及解决办法

    [问题描述] 假设a.aspx.cs页面保存有Session["empid"]="3",当a.aspx.cs通过Response.Redirect(" ...

  4. ASP.NET MVC之"重定向/页面跳转"(关键词RedirectToAction,Redirect)

    MVC5 API(官方) 1.RedirectToRouteResult RedirectToAction(string actionName); RedirectToRouteResult Redi ...

  5. Server.Transfer,Response.Redirect用法点睛

    Server.Transfer,Response.Redirect的区别 如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个 ...

  6. 页面跳转 Server.Transfer和 Response.Redirect的区别

    1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...

  7. Server.Transfer 和 Response.Redirect 用法区别

    在ASP.NET中,在后台传值方式目前大多都是用 Response.Redirect("页面地址") 来重定向页面的,但是现在还有一种方式也可以达到重定向页面的作用,而且在某些时刻 ...

  8. 在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别

    jsp中常用的几个内置对象: 一.request对象 主要作用:  (1)获取请求页面的信息   比如:request.getParameter("参数名");  (2)获取客户端 ...

  9. Servlet页面跳转实现方法的区别

    一直对Servlet页面跳转的几种方式理解的糊里糊涂的,今天在网上搜了一把,找到一遍比较好的,记下来,以后看看. Servlet页面跳转分两部分,一是发生在Servlet,一是在JSP,其实JSP也就 ...

随机推荐

  1. 十五天精通WCF——第十二天 说说wcf中的那几种序列化

    我们都知道wcf是由信道栈组成的,在我们传输的参数走到传输信道层之前,先需要经过序列化的过程,也就是将参数序列化为message,这篇 我们就来说说这里的序列化,蛮有意思的,可能初学者也明白,在wcf ...

  2. SQL Server 2000: 维护计划无法执行

    开启“sql server agent”服务,控制面板-->管理工具-->服务

  3. 查看Android支持的硬解码信息

    通过/system/etc/media_codecs.xml可以确定当前设备支持哪些硬解码.通过/system/etc/media_profiles.xml可以知道设备支持的具体profile和lev ...

  4. Java Dom解析的三个实例

    概述 Dom解析的文章已经烂大街了.在这里,只举三个场景下如何编码的例子: xml内有多个同名节点,获取这多个同名节点 已获取到某个节点,生成这个节点的xml描述 修改节点某属性的值 详细的讲解看官请 ...

  5. subversion 1.8.5好像不是很成熟

    加:--enable-all-static1. 没找到libneon库支持,不得不用libserf。2. libserf编译要用到scons.py,所有要有python工具支持。3. 当遇到链接少ss ...

  6. ovirt-engine安装

    一.安装 1.更新系统 原来是centos4.5 #yum update 升级后到6.7版本. [root@localhost ~]# cat /etc/redhat-release CentOS r ...

  7. python中strip,lstrip,rstrip简介

    一.起因 今天在做角色控制中,有一个地方用到rstrip,判断用户请求的url是否与数据库对应可用权限中url相符. if request.path == x.url or request.path. ...

  8. 转载:学习Entity Framework 中的Code First

    看完觉得不错,适合作为学习资料,就转载过来了 原文链接:http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html 这是上周就写 ...

  9. 通过Hander进行界面刷新

    Timer timer; TimerTask task; Handler handler;//先声明这3个变量 //在onCreate方法内 handler = new Handler(){ @Ove ...

  10. 第26章 创建型模式大PK

    26.1 工厂方法模式 VS 建造者模式 26.1.1 按工厂方法建造超人 (1)产品:两类超人,成年超人和未成年超人. (2)工厂:这里选择简单工厂 [编程实验]工厂方法建造超人 //创建型模式大P ...