明凯博客

关注网站技术,一个特立独行的程序员

ASP中Server.Execute的方法详解

Server对象的Execute方法是ASP3.0新增的方法,只有WEB服务器采用IIS5.0或更高版本时才有效。
其用法为:

1
Server.Execute("URL")

功能:停止执行当前页面,将执行控制权转到URL所指定的新页面中,用户的当前环境(会话状态和任何当前事务状态)将传递到新页面,待新页面执行完后,控制权将返回到原始页面,并继续执行原始页面中Execute方法之后的语句。

该方法的功能有点类似于过程调用,只不过此处调用的不是过程,而是一个完整的ASP页面。

例如:若要根据客户端语系的不同,访问不同的页面,则实现代码为:

1
2
3
4
5
6
7
8
< %
language=Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
if language="zh-cn" then
    Server.Execute("chinese/index.asp")
else
    Server.Execute("english/index.asp")
end if
%>

另外,在ASP中,还可以通过#Include指令,将一个ASP文件包含到网页中。

区别:

execute的话全局变量不共享,各自独立。
include应该是快一些的。
Execute Method 是个呼叫一个.asp 程序并执行它;
#include 则仅將所包含的程序插入原程序当中,开始并不执行的,执行的时候也不一定是全部。

Server.Execute 的一个很好的特点是运行条件包含的能力。通常情况下包含不能是有条件的,因为#include 指示是在脚本代码执行处理条件之前预先处理的。但是用Server.Execute 可以写出这样的代码,查看一个session变量,决定调用哪一部分代码,而不是总是装载着两部分代码。

1
2
3
4
5
If Session("DoThisOrThat") = "this" Then 
Server.Execute("this.asp") 
Else 
Server.Execute("that.asp") 
End If

调用 Execute 语句的上下文确定了要运行的代码可以使用的对象和变量。作用域内的对象和变量是 Execute 语句中运行的代码可以使用的。

与其他过程类似,新的过程的作用域是全局的,它继承了全局作用域的全部东西。与其他过程不同的是,它的上下文不是全局作用域,因此它只能在发生 Execute 语句的过程内的上下文中执行。不过,如果相同的 Execute 语句是在过程之外(例如在全局作用域)的作用域中被调用,那么它将不仅继承全局作用域中的所有东西,而且它还可以在任何地方被调用,因为它的上下文是全局的。

, , ,

相关文章

2 条评论 “ASP中Server.Execute的方法详解

发表评论

电子邮件地址不会被公开。 必填项已用*标注