注意server.Transfer()和response.redirect()都是是实现页面的重定向(页面跳转), 但是两者有很大的不同
Response.Redirect()
1.需要客户端(浏览器)与服务端进行两次通信
首先浏览器向客户端发送一次请求,浏览器接受请求返回一个302状态码和新的url
之后浏览器会对新的url发送一个请求,实现页面的跳转
2.跳转之后浏览器显示的url发生改变
3.使用response.redirect()从a页面跳转到b页面之后,就无法接收a页面中的表单中的数据
4.response.redirect()可以从一个跨服务器跨站点跳转
Server.Transfer()
1.server.Transfer()是在IIS5.0之后才新加的
2.server.Transfer()跳转只需要客户端和服务端一次通讯,跳转在服务端实现
因此并不会占用较多的 HTTP 请求,因此这可以减轻服务器的压力,使你的服务器运行更快
3.server.Transfer()实现跳转,浏览器URL上并没有看到有重定向痕迹,
如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,
因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。
4.使用server.Transfer()实现a页面到b页面的跳转,b页面可以接收a页面中的表单数据
5.server.Transfer()只能从在同一服务器端的同一站点间运行,
所以你不能用 Server.Transfer 将用户重定向到另一服务器上的站点。
注意:其实虽然server.Transfer()的效率比response.redirect()高
但是我们一般是使用response.redirect(),只是因为我们希望浏览器地址栏中的url发生改变
这样用户才会明显的发现页面发生了跳转