response.redirect 其实是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求那个新的地址,流程如下:
浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址(服务器返回的Response.Redirect后面的地址)
PS: ASP.net里面用Response.Redirect跳转,PHP里面是Header("Location",$URL);这两种方式都是一样的原理,就是在输出的HTTP头里面加上一个Location字段,值为要跳转的目的地址,同时把返回的HTTP状态值设为302。
Server.Transfer 语句当接受地址后是直接转向后面的地址,流程如下:
浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件。
优缺点比较:
1.Server.Transfer 只能在同一服务器端的同一站点内进行重定向;而response.redirect 没有此限制。
Server.Transfer 后面只能使用形如test.asp这样的相对路径的文件或者目录地址,不能带参数(
似乎也可以带参,add By Shirlly)。比如要定向到 test.asp?id=1就只能用Response.Redirect 而不能用Server.Transfer。
2.Server.Transfer 在服务器端直接重定向,不用像response.Redirect一样要先与浏览器通信再重定向,这样可以减轻服务器的压力,效率高。
3.Server.Transfer 可以保留上下文信息,Server.Transfer 方法有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 querystring 和任何 form 变量都会同时传递到你定位的页面。 例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。
4.Server.Transfer 不会改变客户端的浏览器地址栏内的地址,也不会更新浏览器的历史记录。而response.Redirect 则会显示重定向后的地址,也会更新浏览器的历史记录。
总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面(有一点小小的缺陷,请参见:http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920 )。
原文连接:http://www.cnblogs.com/baiyicug/archive/2008/08/27/1277729.html
分享到:
相关推荐
页面的跳转问题 主要包括Response.Redirect Server.Transfer的区别
如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个页面,而另一些人好像偏爱于神秘的 Server.Transfer,那么,这二者有什么区别? Response.Redirect ...
你可以使用下面的代码将用户引导到另一个页面: Response.Redirect(“WebForm2.aspx”) 或者 Response.Redirect(“http://www.cnnas.com/”) Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server....
Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上... Response.Redirect则是客户端第一次请求服务器返回状态代码302及新URL,客户端再次请求新URL,服务器再返回新页面,比Server.Transfer多一次应答。
这两天在开发调试过程中,老是会出现在一个 “正在中止线程“...以下是主要信息的摘要: 症状 如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 t
关于重定向的几个方法和说明 Server.Transfer方法 Server.Execute方法. Response.Redirect:
1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。...使用Server.Transfer
1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。...3.使用Server.Transfer
三个页面跳转 response.redirect server.transfer sever.execute 应用
如: 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答: private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。...使用Server.Transfer
ASP.NET页面传值汇总.pdf response.redirect cookies session Application server.transfer
在ASP.NET应用中,Web表单之间的导航有多种方式:用超级链接,用Response.Redirect,用Server.Transfer,或者用Server.Execute。本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式。
经典.net面试题目 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。...3.使用Server.Transfer 4.使用Application 5.使用Cache 6使用HttpContext的Item属性 7.使用文件 8.使用数据库
在a.aspx跳转到b.aspx 通过Server.Transfer(“b.aspx”) 与Response.Redirect(“b.aspx”)的区别 如果是通过通过Server.Transfer()在a.aspx跳转到b.aspx的,则在b.aspx页面,可以查找到保存在a.aspx页面中的 控件中...
收集130道ASP.NET面试题 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 ....使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是
1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 ....使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。
《ASP.NET面试题大全》内容摘要:private、 protected、 public、 internal 修饰符的访问权限,ASP.NET 页面之间传递值的几种方式,C#中的委托是什么,件是不是一种委托,override与重载的区别,实现...使用Server.Transfer
Server.Transfer和Response.Redirect实现页面跳转的区别Adventure Works网站示例项目