asp?服务器端文件包含及类似方法
(2009-06-08 12:32:29)
转载
标签:
asp
include
redirect
transfer
execut
杂谈分类: 网站技术 服务器端文件包含及类似方法
1. Include关键字:
语法:
File属性值对应着文件的相对地址。被包含的文件路径,不能是虚拟目录,路径中不能有变量。可以使用 “../”代表代表父目录,此时要求在IIS配置中选中了“启用父路径”,默认为不启用。允许使用多个“../”返回到更高的目录。可以使用“./”代表当前目录,也可以什么都不加,此时也代表当前目录。不允许使用“/”根目录,不能使用两个“//”,也不能以“/”开始。
Virtual 属性对应的是虚拟地址。可以使用虚拟目录,路径中不能有变量。可以使用“/”代表根目录,与不加意义相同,但为与其它语言习惯性兼容,应该加上。不能使用“../”和“./”,可以在开始位置使用两个或两个以上的"//",意思与一个相同。
原理:
在ASP进行语法校验前,将被包含的文件(1.asp)的内容完全复制到当前页面。包含文件与被包含文件中的信息是可以交互使用的。
注意:
包含语句应放到 语法标识外面;
被包含文件可以有执行能力,或是进行了各类定义的库文件,被包含文件可以为空;
如果文件不存在或没有读取权限将出错;
由于是将内容复制过来,如果在逻辑上出现对同一变量的重复定义(即对同一变量名多次使用了Dim关键字),是不允许的;
“”、“Respnse.Buffer”、“Option Explicit”等语句有其放置特殊性,最好不要在被包含文件中使用。如果使用,应将这些信息放到统一的文件中,并使这个文件一页面的第一行被包含引用,而其它文件不要再有类似定义。
2. Server.Transfer方法:
语法:
Server.Transfer(filePath)filePath 可以是相对路径,也可是虚拟路径,可以存在有变量,如站点根目录配置。
原理:
停止当前文件的运行,后面的代码不再执行,并将控制权交给 filePath 的指定文件。两个文件中的信息不能互相使用,但使用相同的缓存。
注意:
filePath 应该对应一个有独立执行能力的文件,并且不能是0字节文件;
由于调用本方法时,本页后面的代码不再执行,调用之前应关闭必要的对象;
只有在程序逻辑执行时,条件符合时,才会用到这个页面,并在此时检查页面是否存在;
如果前面的页面已经向客户输出内容,将不能再使用 Reponse.Buffer 等那些要求在输出前进行定义的属性,也不能使用Response.Redirect方法;
3. Server.Execute方法:
语法:
Server.Execute(filePath)filePath 可以是相对路径,也可是虚拟路径,可以存在变量,如站点根目录配置。
原理:
用于停止当前文件运行,并将控制权交给作为一个参数传递的URL的限定文件,当该文件完成后,控制权会交给原始文件,继续执行Execute方法后面的语句。两个文件共用同一缓存,但不共用对方定义的变量和创建的对象。
注意:
与 Tansfer方法的注意事项相同,只是第二条不再适用,包含文件在被包含文件执行前使用的对象或变量,在 Execute方法执行后继续可用;
如果前面的页面已经向客户输出内容,将不能再使用 Reponse.Buffer 等那些要求在输出前进行定义的属性,也不能使用 Response.Redirect 方法;
在被包含文件中,如果遇到 Response.End 或 Response.Redirect 方法,响应结束,包含文件中其它代码将不再执行,所以如果被包含文件存在这样的语句,就不要在包含文件中过早地建立对象,以防止无法关闭或释放。
4. 公共特性:
被包含文件中所用的Request对象与当前文件完全一致;
无论是包含或跳转页再次包含或跳转其它任何页面,其对应的目录都是以首次被执行文件所在目录为当前目录;
在客户端看不到是否请求了被包含文件;
路径中的/ 与 \ 作用相同;
如果可以使用“../”或“./”,则可以出现在路径的中部,但这很不规范,似乎也没有必要;
多个“../”,会向上无限次寻找父目录;
不能路径中部出现连续的 /,后两种方法调用 Server.MapPath 方法解析地址;
被包含文件必须有确定的文件名;