1.客户端跳转(重定向):
如果“a.asp”中用到:response.Redirect("b.asp")
地址栏会变成指定的url地址,此方法和JSP中的重定向有所不同,当页面遇到此语句马上跳转,而不继续进行语句下面的代码。测试方法:在此语句下面加一句“<%session("test")="test"%>”,在“b.asp”页面中输入“session=<%=session("test")%>”;如果b.asp中显示的数据是“session=test”,那说明a.asp中遇到语句后会继续执行下面语句,如果b.asp中显示的数据时“session=”,那说明没有继续执行下面语句。结果测试没有执行下面语句。总结:当用户执行到此语句后地址栏会变成要执行的地址,而且不会进行语句下面的代码。
2.服务器端跳转,Server.Transfer()和Server.Execute():(两种方法地址栏都不变,但两者还是有一点区别)
(1)如果在“a.asp”中用到:Server.Transfer("b.asp")
当“a.asp”页面运行到此语句时,会马上跳转到“b.asp”里,并执行“b.asp”中的语句,执行后不会回跳到原来的页面。测试的方式是,查看“a.asp”在浏览器端页面的源文件,会发现“a.asp”中的源代码中在此语句开始的部分都是变成“b.asp”运行后的代码,如果“a.asp”是完整的页面,你会发现属于“a.asp”在浏览器端查看的源文件中的</body></html>都不见了。如果测试是马上跳转还是执行完页面后再跳转可以用1中的方法。
结论:运行到此语句,页面会马上执行指定的文件,而不会执行后面的语句,并且执行完指定的文件后不会回跳到原本的页面。
(2)如果在“a.asp”中用到:Server.Execute("b.asp")
用(1)中的方法测试。结果“a.asp”中的“</body></html>”都存在。
结论:运行到此语句,页面会马上执行指定的文件,执行完后回回跳到原本的页面。这种效果上会和“包含文件元素<!--#Include...-->”有点相似,但又不是完全相同。因为“<!--#Include...-->”元素是把文件包含进来再运行的,如果元素中包含有一些重复的变量时会带来不少的麻烦。
该处以asp为例,其他语言同理。