asp基础实用教程(DOC格式)-第5部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
尽管缓存对HTML页都能很好运行,但对包含动态生成信息的ASP页则不尽人意。例如,报告股市行情或显示大量业务的存货清单需要提供即时信息。一小时前的信息对目前来讲是很不准确的。如果应用程序返回个人的信息,例如,自定义的主页,希望用户不能看到另一个用户的个人信息。
默认情况下,ASP命令代理服务器自己不能缓存ASP页(尽管缓存图像、位图、小型应用程序,和其他缓存页上的参考项)。可以使用Response。CacheControl属性设置缓存控制HTTP标题字段允许缓存某一页。Response。CacheControl的默认值是字符串〃Private”,它避免代理服务器缓存此页。要允许缓存,可将缓存控制标题字段设置为Public:
因为在任何页的内容被发送之前,HTTP标题必须被送给浏览器或代理服务器,所以,可在任何HTML标记之前设置Response。CacheControl属性或使用Response。Buffer缓存此页。
缓存控制标题字段是HTTP1。1规格的一部分。在只支持HTTP1。0的代理服务器上不能缓存ASP页,因为没有到期的标题字段发送。
避免浏览器缓存页
每一个浏览器版本都有它自己的规格来规定是否缓存页。要避免浏览器缓存ASP页,可使用Response。Expires设置到期标题:
值为0强迫缓存页到期。因为在任何页被发送之前,HTTP标题必须被送给浏览器,所以可通过将Response。Expires属性放在HTML标记之前或使用Response。Buffer缓存该页。
创建动态通道
Internet Explorer 4。0有一个新的特性,Web规划人员可以使用该属性将带有公用主题的Web页并入一个通道。在浏览器中,通道被显示在通道标题栏上;用户通过单击图标访问通道。通道在后台自动更新;用户不必访问站点就可以在自己的浏览器上下载最新的页。通道为用户提供了一条浏览一组相关的Web页的快速而直接的通路,并且这些Web页是自动更新的。
使用ASP,可以编写脚本来收集用户的首选项,然后动态地创建通道。通道定义文件(。cdf)建立了通道内容的组织和顺序。在。cdf文件中的命令使用与HTML标记相同的语法,以便于掌握和从脚本中生成。在编写ASP脚本来创建通道定义文件时,脚本用。cdx扩展名。当ASP读取一个以。cdx为扩展名的文件时,将自动发送application/x…cdf内容类型,它告诉浏览器用通道定义来解释字节。如果不使用。cdx作扩展名,则脚本必须用Response。ContentType手工将内容类型设置为application/x…cdf。
下面是一个有关如何使用通道的示例。下面的HTML表格要求用户选择通道。提交时,该表格调用。cdx文件的脚本去创建通道的定义。
Choose the channels you want。
Movies
Sports
Chan。cdx中的脚本根据与请求一起提交的表格的值创建通道定义。
channel definition statements for the movie pages
channel definition statements for the sports pages
有关通道和通道定义文件的信息,请参阅Exploration Air范例站点。
向服务器发送文件
浏览器可以使用Posting Acceptor应用程序将文件发送给Web服务器。当Posting Acceptor上载文件时,将发送列出每一个收到的文件名称和位置的URL…encoded表格字段。可以将邮递处理的URL添加到脚本中,此脚本上载文件去调用 ASP脚本来处理这些字段名。例如,可以编写一个脚本,自动地通过文件的名称和位置发送e…mail给系统管理员。有关Posting Acceptor的详细信息,包括ASP脚本示例,请参阅Posting Acceptor。
向浏览器传送脚本
尽管ASP主要用来创建和处理服务器端脚本,还是可以使用它生成由客户浏览器处理的客户端脚本来扩展其效用。通过组合传送到浏览器的脚本命令可以编写服务器端脚本。
通过组合由HTML注释括起来的客户端脚本和由定界符括起来的服务器端脚本可以做到这一点:
在以上的脚本中,ASP在服务器上检索时间和日期信息,然后通过几次循环生成在用户的Web服务器上运行的子程序。每个客户端子程序提出随机选择的问候,显示时间和日期信息。
这种脚本可扩展,例如,将配置信息检索并提交到指定的客户端脚本或组件,如ActiveX控件。灵活地使用这种脚本的编写技巧,同样可以加快Web服务器处理和返回用户信息请求的速度。
九、包含文件
SSI指令为用户提供在Web服务器处理之前将一个文件的内容插入到另一个文件的方法。ASP只使用这一机制的#include指令。要在。asp文件中插入一个文件,使用下面的语法:
virtual和file关键字指示用来包含该文件的路径的类型,filename是您想包含的文件的路径和名称。
被包含文件不要求专门的文件扩展名;但是,为被包含文件赋予。inc扩展名以便和其他类型文件相区分是一个良好的编程习惯。
使用Virtual关键字
使用Virtual关键字指出路径开始于虚拟目录。例如,如果一个被命名为Footer。inc的文件属于一个名为/Myapp的虚拟目录,则下面的一行将把Footer。inc的内容插入到包含该行的文件中:
使用File关键字
使用file关键字指示使用相对路径。相对路径开始于含有该包含文件的目录。例如,如果您的文件位于目录Myapp中,而文件Header1。inc在MyappHeaders中,下面的一行将把Header1。inc插入到您的文件中:
注意,到被包含文件Headers/header1。inc的路径是相对于包含文件的;如果包含#include语句的脚本不在/Myapp目录中,那么该语句将不起作用。
如果在Internet服务管理器中的”启用上层目录”选项被选中,则也可以使用file关键字和。。/语法包含父目录即上一层目录中的文件。有关命令,请参阅配置ASP应用程序。
被包含文件的位置
被包含文件可以在您的Web站点内的某个目录中,也可以在您的Web站点之外。通常,您应该使被包含文件位于Web站点的目录中。如果一个被包含文件位于您的Web站点内,则当浏览器下次请求包含文件时,将显示对被包含文件的改变。但是,如果被包含文件位于您的Web站点之外,直到 ASP应用程序重新启动或Web服务器重新启动时,这种改变才能体现出来。ASP检测在应用程序命名空间中(在应用程序的起始目录下)的任何包含文件的改变。
包含文件:提示和警告
一个被包含文件也可以包含其他的文件。如果#include指令没有导致循环,一个。ASP文件可以多次包括同一个文件。例如,如果文件First。ASP包含文件Second。inc,则Second。inc 一定不能再包含First。asp。一个文件也不能包含自身。ASP检测此类循环或嵌套错误,并在检测到时产生一个错误消息,同时停止处理被请求的。ASP文件。
ASP在执行脚本命令之前包含文件。因此,不能用脚本命令去创建被包含文件的名称。例如,下面的脚本将不能打开Header1。inc,因为ASP会在它分配一个文件名给变量name之前先执行#include指令。
脚本命令和过程必须完全包含在脚本定界符、HTML标记和或HTML标记和中。也就是说,不能在一个。ASP包含文件中打开一个脚本定界符,然后在一个被包含的文件中才关闭该定界符;脚本或脚本命令必须是一个完整的单元。例如,下面的脚本将无法运行:
使用HTML表格
使用ASPRequest对象,您可以创建一个简单而功能强大的脚本来收集和处理HTML表格数据。在本主题中,您将不仅学会如何创建基本的表格处理脚本,而且还将获得用于验证Web服务器和用户浏览器上的表格信息的一些有用技术。
关于HTML表格
HTML表格是收集Web信息最常用的方法,是在Web页上提供用户界面控件的特殊的HTML标记的排列。文本框、按钮和复选框都是典型的控件,这些控件使用户和Web页实现交互,并且将信息提交给Web服务器。
下面的HTML示例产生一个表格,在表格中,用户可以输入姓名、年龄并包含一个将这些信息提交给Web服务器的按钮。该表格也包含了一个隐含的控件(Web浏览器不显示),可以用该控件向Web浏览器传递附加信息。
处理ASP输入的表格
在表格向Web服务器提交信息时,用户的Web浏览器请求用HTML标记的ACTION属性所指定的。ASP文件(在前面的例子中,该文件被称为Myfile。asp)。。ASP文件包含了处理表格值(如显示结果表或从数据库查询信息)的脚本。
可以通过三种途径用。ASP文件收集HTML表格的值
* 静态的。htm文件可以包含一个将其数值邮送给。ASP文件的表格。
* 。ASP文件可以创建一个将其信息邮送给另一个。ASP文件的表格。
* 。ASP文件可以创建一个将其信息邮送给自身的表格,即包含该表格的文件。
前两个方法的操作方式相同,当表格与网关程序交互时,除ASP之外,可以包含读取和响应用户选择的命令。
创建一个包含表格定义且传送信息给自身的。ASP文件较复杂,但却是有很强功能的处理表格的方法。这一过程在验证表格输入中演示。
获得表格输入
ASPRequest对象提供了两种集合,在很大程度上简化了检索附加在URL请求上的表格信息的任务。
1、QueryString集合
QueryString集合获取作为跟在请求的URL的问号后面的文本传递给Web服务器的值。通过使用HTTP GET方法或手工将表格的值添加到URL,表格的值可以被附加在请求的URL之后。
例如,如果先前的表格示例使用GET方法(ACTION = ”GET”) 且用户键入Jeff、Smith和 30,那么下面的URL请求将被发送给服务器:
http://scripts/Myfile。asp?firstname
=Jeff&lastname=Smith&age=30&userstatus=new
Myfile。ASP包含下面的表格处理脚本:
Hello; 。
You are years old。
在这种情况下,Web服务器将返回下面的文本给用户的Web浏览器:
Hello; Jeff Smith。 You are 30 years old。 This is your first visit to thisWebsite!
QueryString集合有一个可选参数,可用来访问显示在请求正文中的多个值中的一个。也可以使用Count属性计算一个特殊类型的值的出现次数。例如,表格包含一个多项目的列表框可以提交下面的请求:
http://list。asp?food=apples&food=olives&
food=bread
您也可以使用下面的命令去对多个值计数:
Request。QueryString(”food”)。Count
如果想显示多个值的类型,List。ASP应包含下面的脚本;