ASP3.0高级编程论文

时间:2022-10-20 05:21:47

ASP3.0高级编程论文

使用ServerVariables集合

当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同页面请求从客户端发送到服务器的”_

&QUOT&“1gentruecomment“&QUOT_

&“RSACiNorthAmericaServer”&QUOT&“for“&QUOT_

&“”&QUOT&“on“&QUOT_

&“1999.08.01T03:04-0500”&QUOT&“r(n0s0v2l3))”

Response.Pics(strPicsLabel)

这段代码添加了如下的PICS卷标:

(PICS-1.0“/ratingsv01.html”1gentruecomment“RSACi

NorthAmericaServer”for“”on“1999.08.01T03:04-0500”

r(n0s0v2l3))

要得到关于PICS的更多的信息,或了解更多的定义页面内容的方式,请检索/站点。

在InternetServiceManager中定义报头

在第1章,已经说明了如何在InternetServiceManage(MMC插件)应用程序中设置每个Web网站和IIS5.0目录的属性,这就定义了使用此站点或目录资源发送到客户机的所有请求的HTTP报头,也就提供了使用每个网页中的ASP脚本代码设置这些属性的替代方法。

在Web站点或目录上右击鼠标并选择“Properties”,在其对话框的“HTTPHeaders”选项卡中,可设置页面内容有效期的相对时间或绝对日期,定义定制的报头,创建PICS内容等级标签,也可以通过MIME类型映射来定义内容类型,如下图所示:

在上图中,可以看到已创建了自定义的REFRESHHTTP报头,应用于从此目录载入的所有网页。即每一分钟自动地重载(刷新)一次(对于显示棒球比赛的最近比分是非常理想的,但对服务器而言负担太重了)。CustomHTTPHeaders栏的Edit对话框如下图所示:

要在“MIMEMap”框中添加自定义的内容类型映射,只需在“Properties”主对话框中单击“FileTypes”按扭把它们添加到清单中即可,如下图所示:

当使用HTTP报头开始试验时,你很快会发现不是所有的浏览器表现都相同,许多浏览器以不同的方式响应不同的HTTP报头,使得可靠地建立一个普遍适用的原则有时极为困难。

2.使用客户证书

假如设立了一个安全的Web网站或部分内容具有安全机制的网站,可安装一个数字服务器证书,通过允许访问者使用证书中的加密的细节,来验证服务器。每一次对该站点或目录的页面请求,服务器都将发送证书的一个副本,浏览器可检查这个副本以确定正在和谁交谈。

同样,也可设置服务器,要求用户在进入网站时提供一个有效的数字证书。他们可从很多来源获得此证书,例如Verisign()或ThawteConsulting()。读者将在第25章看到这一处理过程的细节。

这些情况都使用了Request对象的ClientCertificate集合的值,本章的实例代码中,已包含了一个显示用户如何使用些集合值的一些方法的页面。

这一网页被命名为showcert.asp,而且其所做的一切就是遍历ClientCertificate集合显示其包含的所有值。可使用以前经常使用的简单代码来完成它,唯一的不同之处就是建立一个HTML表以容纳结果,并将其截为每60个字符一组。

<%

ForEachkeyItemInRequest.ClientCertificate()

StrItemValue=Request.ClientCertificate(keyItem)

IfLen(strItemValue)>90ThenstrItemValue=Left(strItemValue,60)&“..etc.”

Response.Write“

”&keyItem&“=“&strItemValue&“

Next

%>

运行结果如下图所示:(由于豆豆没有申请服务器证书,该图略)

使用客户证书重定向

一旦要求所有访问网站或部分网站的浏览者给出的其客户证书,就可以使用其包含的信息来制作我们为此用户创建的网页。例如,可使用他们的证书的Organization条目来自动使他们重定向到该网站的指定部分,使别的访问者重定向到别的地方:

IfRequest.ClientCertificate(“SubjectO”)=“WroxPressInc”Then

Response.Redirect“/wrox_staff/default.asp”‘Wroxstaffsite

Else

Response.Redirect“/public/Default.asp”‘Normalpublicsite

EndIf

相应地,可使用Country条目来使访问者重定向到一个相应的网站:

SelectCaseRequest.ClientCertificate(“SubjectC”)

Case“UK”:Response.Redirect“uk_site.co.uk/”

Case“DE”:Response.Redirect“de_site.co.de/”

Case“FR”:Response.Redirect“fr_site.co.fr/”

‘...ect.

CaseElse:Response.Redirect“/”

EndSelect

3.读写二进制数据

有两个方法提供了对从浏览器发送到服务器的HTTP数据流和从服务器返回到浏览器的数据流的二进制数据访问。Request.BinaryRead方法可得到指定要读取的字节数的参数,并返回变体类型的数组,其中包含从请求的POST段中得到的字节(例如在ASP的Form集合中数据)。下面的程序读数据的头64个字节:

varContent=Request.BinaryRead(64)

假如使用了BinaryRead方法,以后就不能访问ASP的Request.Form集合。同样,一旦我们采用任何方式引用了Request.Form集合,就不能使用BinaryRead方法。

把二进制数据写进ASP创建的响应流中也是可能的,可采用BinaryWrite方法。需要给其提供想写到客户的字节的变体类型数组:

Response.BinaryWrite(varContent)

这些方法都很少使用,除非从一个数据库创建非HTML源才用到这些方法。使用的一个实例就是从数据库读取组成图像的字节,并使用BinaryWrite方法把它发送到客户。

4.创建定制的日志消息

假如设置了服务器,以W3CExtendedLogFileFormat格式将请求记录到一个文本文件,可使用Response.AppendToLog方法在日志文件条目的结尾处添加一条消息字符串。若想为特定的网页存储一些值或消息,或在脚本中出现了特定的情况时,这种方式是非常有用的。

例如,通过的Intranet的“stationaryorder”应用程序,可以记录超过特定的条目数目的雇员的部门号码:

...

IfintItemCount>25Then

Response.AppendToLog“Largeorderfrom‘”&strDept&department.”

EndIf

...

设置扩展的日志

要使用AppendToLog方法,必须激活W3CExtendedLogFileFormat日志设置。该设置方法是,进入Properties对话框中的WebSite选项卡,选中EnableLogging复选框,选择W3CExtendedLogFileFormat并单击Properties按钮,如下图所示:

在出现的ExtendedLoggingProperties对话框中,可选择想包括进日志文件的条目。确保选中URIStem,否则AppendToLog方法将失败,如下图所示:

我们提供了一个试图在日志文件中写入一个条目的简单实例页面,可从RequestObject主页(show_request.asp)中的AppendToLog方法链接处打开它。这一页面所做的全部工作就是创建一个包含当前日期和时间的简单字符串,然后执行AppendToLog方法:

strToAppend=“Pageexecutedon”&Now

Response.AppendToLogstrToAppend

结果如下图所示:

小结

本章已经开始了对ASP3.0的研究,而且我们也看到了ASP3.0如何与InternetInformateionServer5.0共同工作,以提供一个易用的、高效的创建动态Web网页和Web应用程序的方法。当然,仍有一些地方需要去研究,本章仅仅是学习了ASP内置的两个最基本的对象。

这两个最基本的对象是Request和Response对象,允许我们访问和使用作为客户机/服务器会话一部分的值,无论用户何时从Web网站请求和载入一个网页或资源,这种会话就会进行,意味着Request对象能够提供对用户请求的全部内容的访问,同时Response对象允许创建和修改服务器发回的响应。

这些对象能够通过集合和属性揭示会话的各个部分,并提供了多个能用来检索和修改各段的方法。假如把它们当作分解用户请求和使用相应的内容创建响应的工具,这有助你理解究竟发生了什么。这也将有助于理解各种方法如何影响客户、服务器和正在创建的网页。

上一篇:稳定与促进就业工作实施通知 下一篇:windowsnt环境程序设计论文

文档上传者
热门推荐 更多>
精品范文更多>