ASP网站制作之利用ServerVariables汇合
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。server|汇合当会商Request工具内容时,要研讨的汇合之一就是ServerVariables汇合。这个汇合包括了两种值的分离体,一种是伴同页面哀求从客户端发送到服务器的HTTP报头中的值,别的一种是由服务器在吸收到哀求时自己所供应的值。为显现ServerVariables汇合中值的利用体例,在RequestObject页面(Show_request.asp)中,点击“ServerVariablesExamples”链接,翻开别的一个页面,以下图所示:
下图所示窗口显现的是ServerVariables汇合中一些十分有效的值的一个子集。
“自援用”页面
在ServerVariables汇合中前往的值包括Web服务器的具体信息和以后页面的路径信息。在任何中央创立一个页面都可以使用这些信息。比方创立一个“自援用”页面,此页面可以再次挪用本身完成另外一项义务,我们能够用以下代码:
<FORMACTION=”<%=Request.ServerVariables(“PATH_INFO”)%>”METHOD=”POST”>
一样的效果能够用HTTP的“SCRIPT_NAME”值取得:
<FORMACTION=”<%=Request.ServerVariables(“SCRIPT_NAME”)%>”METHOD=”POST”>
利用<A>元素翻开一个分歧页,可使用:
...
<%
strFullPath=Request.ServerVariables(“PATH_INFO”)
‘Stripoffthefilename
strPathOnly=Left(strFullPath,InStrRev(strFullPath,“/”))
strNextPage=strPathOnly&“pages/next_page.asp”
%>
...
<AHREF=”<%=strNextPage%>”>NextPage</A>
...
即便原始页面的称号或地位产生变更,这些实例都能一般事情,由于利用了以后页面的路径信息(固然,第二个例子在分别的方针页的称号产生变更时运转会失利)。
换句话说,假如为搜刮引擎的子会话主动创建URL,能够搜集ServerVariable的一些值:
strFullURL=http://&Request.ServerVariables(“LOCAL_ADDR”)_
&“:”&Request.ServerVariables(“SERVER_PORT”)_
&Request.ServerVariables(“PATH_INFO”)
这将创立一个完全的URL包含端标语(这类情形下,不是尺度值80)。比方,了局多是:
http://194.74.60.254:1768/thispath/thispage.asp
检测扫瞄器的版本
ServerVariables汇合中,别的一个有效的值是用户扫瞄器的用户代办署理字符串。在“DetectingtheBrowserType”页面(browsertype.asp),利用ServerVariables汇合中的“HTTP_USER_AGENT”值来取得用户代办署理字符串,一些剧本用来剖析该信息并寻觅临盆厂家称号和扫瞄器版本。
<%
strUA=Request.ServerVariables(“HTTP_USER_AGENT”)
Response.Write“TheUserAgentstringis<B>”&strUA&“</B>
”
IfInStr(strUA,“MSIE”)Then
Response.Write“Toupgradeyourbrowsergoto“_
&“<AHREF=”&Chr(34)&http://www.microsoft.com/ie/”_
&Chr(34)&“>http://www.microsoft.com/ie/<A>
”
intVersion=Cint(Mid(strUA,InStr(strUA,“MSIE”)+5,1))
IfintVersion>=4Then
Response.Write“YoucanuseMicrosoftDynamicHTML”
EndIf
Else
IfInStr(strUA,“Mozilla”)Then
IfInStr(strUA,“compatible;”)=0Then
Response.Write“YourbrowserisprobablyNavigator.Youcan“_
&“downloadthelatestversionofNavigatorfrom“_
&“<AHREF=”&Chr(34)&http://home.netscape.com/”_
&“download/”&Chr(34)&“>http://home.netscape.com”_
&“/download/</A>
”
intVersion=Cint(Mid(strUA,InStr(strUA,“/”)+1,1))
IfintVersion>=4Then
Response.Write“YoucanprobablyuseNetscapeDynamicHTML”
EndIf
Else
strVersion=Mid(strUA,InStr(strUA,“compatible;”)+12)
strProduct=Left(strVersion,InStr(strVersion,““))
Response.Write“YourbrowserisNavigator-compatible.Youcan”_
&“searchforthemanufacturerusingasearchengine,suchas”_
&“<AHREF=”&Chr(34)_
&“http://www.altavista.digital.com/cgi-bin/query?q=”_
&strProduct_
&Chr(34)&“>http://www.altavista.com/</A>
”
EndIf
EndIf
EndIf
%>
对IE5.0和Navigator4.61的搜刮了局分离分歧,关于其他厂家的扫瞄器,能够失掉一个链接在AltaVistaWeb站点主动入手下手搜刮厂家的称号。
注重,Netscape在用户代办署理字符串中不供应厂家的称号,因此没法相对包管一个扫瞄器必定是Navigator。
检测扫瞄器的言语
ServerVariables汇合中别的一个有效的值是“HTTP_ACCEPT_LANGUAGE”,它包括了一个当扫瞄器安装时指定的,或硬编码进用户的区域版本的言语代码。言语代码的例子有en-us(英国、美国)、de-at(德国、澳年夜利亚)和es-pe(西班牙、秘鲁)。
言语代码能够是一样平常的且省略方言标识:比方,在我们的站点Wrox者,多量扫瞄者都是将en(英语)作为言语代码。
因而,能够检测言语代码并主动装载一个符合的特定区域或指定言语版本的页面。
StrLocale=Lcase(Left(Request.ServerVariables(“HTTP_ACCEPT_LANGUAGE”),2))
SelectCasestrLocale
Case“en”:Response.Redirect“http://uk_site.co.uk/”
Case“de”:Response.Redirect“http://de_site.co.de/”
Case“fr”:Response.Redirect“http://fr_site.co.fr/”
‘...etc
CaseElse:Response.Redirect“http://us_sitel.com/”
EndSelect
大概依据特定的方言,重定向页面:
strLocale=Lcase(Request.ServerVariables(“HTTP_ACCEPT_LANGUAGE”))
SelectCasestrLocale
Case“en-gb”:Response.Redirect“http://uk_site.co.uk/”
Case“en-us”:Response.Redirect“http://us_site.com/”
Case“es-pe”:Response.Redirect“http://es_site2.co.pe/”
‘...
CaseElse:Response.Redirect“http://us_site1.com/”
EndSelect
其他有效的ServerVariables汇合的值
能够会见和利用ServerVariables汇合中的任何一成员,把持ASP页面呼应一个哀求的体例。能够反省一个扫瞄者会见站点时利用的是不是是缺省端口80或仍是另外一个。在这个例子里,寻觅经由过程端口443的会见――这个端口供应的是平安套接字层(SecureSocketLayer,SSI)会见(和其他的协定),且将它们重定向到一个响应的页面。
IfRequest.ServerVariables(“SERVER_PORT”)=“443”)Then
Response.Redirect“/securesite/default.asp”‘Secureuser
Else
Response.Redirect“/normalsite/default.asp”‘Non-secureuser
EndIf
假设请求扫瞄者注册且由服务器考证(而不是同意他们在Web服务器的IUSER帐号下匿名会见,这个成绩将在前面章节中具体会商),能够查询用户称号,来判断正在与我们打交道的用户是谁,是不是装载页面给该用户。比方,上面的这个代码将只向名为Administrator的用户显现办理链接。
...
<AHREF=”dispcnfg.asp”>ChangeDisplayConfiguration</A>
<AHREF=”dispcolr.asp”>ChangeDisplayColors</A>
<AHREF=”keyboard.asp”>ChangeKeyboardConfiguration</A>
<%
IfRequest.ServerVariables(“AUTH_USER”)_
=Ucase(Request.ServerVariables(“SERVER_NAME”))&“Administrator”Then
%>
<AHREF=”allusers.asp”>AdministerAllUsers</A>
<AHREF=”usrlogon.asp”>AdministerLogonInformation</A>
<%
EndIf
%>
...
注重ASP不填写ServerVariables汇合直到你会见个中的一个成员。初次会见该汇合的一个成员将使IIS失掉它的全体,应只在必要时才利用ServerVariables汇合。
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们) 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 那么,ASP.Net有哪些改进呢? 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
页:
[1]