包含其他文件

你会发现利用服务端的INCLUDE命令可以很容易的在Active Server Pages中包含其他文件。这种服务端INCLUDE命令不需要在脚本中实现，它完全可以作为HTML代码的一部分。

<HTML>

<HEAD><TITLE>

欢迎</TITLE></HEAD>

<BODY>

<!--#INCLUDE VIRTUAL=

“mybanner.inc” -->

欢迎进入迈至科文件包容示例程序

</BODY>

</HTML>

在这个例子中。文件mybanner.inc将被插入到这个ASP文件<BODY>标记下面，当这个ASP文件执行时，在mybanner.inc中的HTML代码以及脚本也将在相应位置执行或出现。（其实和子程序差不多，只不过没有参数传递）

这种文件包含有两种途径，虚拟路径或者物理真实路径。下面是后者的示例：

<HTML>

<HEAD><TITLE>

欢迎</TITLE></HEAD>

<BODY>

<!--#INCLUDE FILE=

“mybanner.inc” -->

欢迎进入迈至科文件包容示例程序

</BODY>

</HTML>

如果你使用FILE命令来指定物理路径，那么文件必须在当前目录或者子目录下面。本例子中，文件在当前目录下，这样限制就比较多，因此，一般你应当使用虚拟路径命令。

这种文件包容对于任何拓展名都是有效的，一般来说，习惯上用

.inc的后缀，但是只要你高兴 .asp、.cfm、.cfml或者任何其他的后缀都是可以的。

注意

当你改变了包含的文件时，并不一定马上就看到效果，那是因为IIS的缓存，IIS在对正常文件变动的响应要迅捷于对包含文件变动的响应。

在这种场合下，你有两种方法处理，一方面是在Internet Service Manager中重新启动一下Server。或者，将包含其他文件的母文件也做一下改动，例如添加一个无意义的空格，那么IIS就会意识到这种变动并且作出正确响应，不过，如果包含变动文件的母文件较多，显然这就成了耗时耗力的工作。

在两种场合下一般需要包含其他文件，一种是有一些十分通用的常用程序段或者脚本，不需要每个ASP文件都写一遍，那么完全可以在每个需要的ASP文件中进行包含就行了。

另外一种是进行判断后根据条件重定向的场合，例如上面小节的例子，完全也可以利用

include语句实现。例如看下面这段例子：

<%

IF Request.Form(

“Username”)=“” THEN

%>

<!--#INCLUDE VIRTUAL=

“regester.asp”>

<%

Response.End

END IF

%>

<HTML>

<HEAD><TITLE>

注册结果</TITLE></HEAD>

<BODY>

谢谢您、

<%=Request.Form(“UserName”)%>注册迈至科网络教程示例。

</BODY>

</HTML>

这个例子说明它可以和Response.Redirect方法具有同样的作用，当用户没有填写姓名时，会被引导回注册主页，不过，由于这个语句的执行完全在服务端完成，因此基本上不存在浏览器的兼容性问题。

再次提请注意Response.End调用，这是防止注册表调用后欢迎页跟着显示出来。

还有很重要的一点必须注意的是，在IIS中对INCLUDE语句的执行是优先于脚本执行的，也就是说，如果把INCLUDE语句放在脚本外面并等待脚本结果来传递参数那么将是行不通的。例如下面这个例子：

<%

IF Request.Form(

“Username”)=“” THEN

Myinlcude=

“register.asp”

ELSE

Myinclude=

“Homepage.asp”

END IF

%>

<!--#INCLUDE VIRTUAL=

“<%=MyInclude%>“ -->

这个脚本就是错误的，因为在

IIS中先执行INCLUDE语句而后才是VB脚本的执行。这样，文件”<%=MyInclude%>“自然找不到。

总结

在这章中，你学会的是如何处理多个

Active Server Pages之间的关系，首先你学会的是从HTML Form中接受数据，包括特定一项一项的接收，也包括一起‘打包’式的接受，第二部分是指如何接受Query字段，其方式和第一部分大同小异。第三部分是重定向方法的应用，最后是文件包含的处理和应用。