ASP的內建對象Server

來源:互聯網
上載者:User

  Server 對象提供對伺服器上的方法和屬性的訪問 , 其中大多數方法和屬性是作為公用程式的功能服務。(IIS HELP翻譯)有了 Server 對象,你就可以在伺服器上啟動 ActiveX 對象常式,並使用 Active Server 服務提供象 HTML 和 URL 編碼這樣的函數。

  一,Script.ScriptTimeout

  在指令碼運行超過一段時間之後,即作逾時處理。伺服器一般的預設指令碼已耗用時間是90秒。你可以從“Internet資訊服務”中“預設Web網站”的屬性彈出框中看出,你也可以自己設定。

  呵呵,上面的可不是,900秒了。應該是“主目錄”標籤中的“配置”對話方塊中,WINXP一樣。

在理解指令碼已耗用時間之前,先來看一個程式,主要功能就是進行計算網頁執行時間的。

<script language=vbs>
startime=timer()
//以下為網頁內容
for i= 1 to 5000 step 20
document.write("<hr width="&int(500+i)&">")
next
//結束時間
endtime=timer()
document.write ("頁面執行時間:"&FormatNumber((endtime-startime)*1000,3)&"毫秒")
</script>

當然對應的ASP也就是看到許多網站都有的頁面執行時間顯示

1,time.asp

<%startime=timer()%>
<a href=#bot>到下面看執行的時間</a>
<%
for i= 1 to 5000
response.write("<hr width="&int(500+i)&">")
next
%>
當然中間還可以添加其它內容。<br>
<%endtime=timer()%>
<a name=bot></a>
<%=FormatNumber((endtime-startime)*1000,3)%>毫秒

那如果上面的程式變成for i= 1 to 5000000

呵呵,是不是機器快反應不過來的感覺,那這個就是指令碼的執行時間了。

為了讓程式能很好的執行,就該把指令碼執行時間放長了。

怎麼放長?把預設的改?呵呵,當然不是:)

<%Server.ScriptTimeout=110%>

時間的設定當然要是比預設90秒大的,現在的代碼就是:指定伺服器處理指令碼在 110 秒後逾時。
還有,指令碼時間的確定要看自身的程式了,一般情況100秒左右也差不多了,即使能執行出來,可能觀看網頁的人早就把它叉叉了。

以上的ScriptTimeout就是Server對象唯一屬性了

二,Server.HtmlEncode

HtmlEncode就是Server對象的其中一個方法了。它允許你對特定的字串進行 HTML 編碼,雖然 HTML 可以顯示大部分你寫入 ASP 檔案中的文本,但是當你需要實際包含 HTML 標籤中所使用的字元,就會遇到問題。這是因為,當瀏覽器讀到這樣的字串時,會試圖進行解釋。

還是看一個程式,我想在頁面顯示“ ”這樣的代碼(附: 是空格的代碼)那麼當我進行書寫的時候你會發現,瀏覽器已經給我解釋了的。

空格的代碼是: 

你會發現上面的代碼都被執行了。

所以,為了要讓一些特殊代碼能夠顯示,就運用該方法了。

2,htmlencode.asp

<%Response.write ("這是沒有採用 HTMLEncode 方法的測試。<br> 這裡就另起一行,說明代碼被執行。 ")%>
<hr>
<%Response.write Server.HtmlEncode("這是對 HTMLEncode 方法的測試。<br> 這裡應該不會另起一行,也就是代碼沒有被執行了。 ")%>

這在許多網站,論壇都存在的一些BUG,不信你可以到各論壇試試:敲入 就是沒有,急死你呢:)當然HtmlEncode只是其中的一個原因,最主要的還是UBB代碼的轉換。不過關於這點我也已經調試解決了。

三,Server.UrlEncode

正如 HtmlEncode 方法使客戶可以將字串翻譯成可接受的 HTML 格式一樣,Server 對象的 UrlEncode 方法則是根據 URL 規則對字串進行正確編碼,當字串資料以 URL 的形式傳遞到伺服器時,在字串中不允許出現空格,也不允許出現特殊字元。為此,如果你希望在發送字串之前進行 URL 編碼,可以使用 Server.URLEncode 方法。

為方便起見,我們先看為處理送交,然後處理接受的效果。

3,urlencode.asp

<%filepath=request.servervariables("script_name")%>
接受URL中的值(沒有處理接受值,發現值被解釋了): <%=request.querystring("webjx")%>
<form action="<%=filepath%>">
你可以輸入“<hr>”等代碼看看:<input type="text" size="20" name="webjx"><input type="submit">
</form>
接受URL中的值(進行了urlencode編碼,不會執行): <%=Server.URLEncode(request.querystring("webjx"))%>

當然你會發現,雖然不執行了,但會出現“<”變成了“%3C”,“>”變成了“%3E”,那這就是因為沒有在發送之前處理。不過,我們還可以通過Replace函數將這些特殊代碼再逆轉過來。

4,vurlencode.asp

<%
function tihuan(what)
tihuan=what
if not isnull(what) then
tihuan=replace(tihuan,"%3C","<")
tihuan=replace(tihuan,"%3D","=")
tihuan=replace(tihuan,"%3E",">")
tihuan=replace(tihuan,"%26","&")
tihuan=replace(tihuan,"%20"," ")
tihuan=replace(tihuan,"%3B",";")
tihuan=replace(tihuan,"%22",""")
tihuan=replace(tihuan,"%2B","+")
tihuan=replace(tihuan,"%2F","/")
end if
end function
%>
<%filepath=request.servervariables("script_name")%>

接受URL中的值(沒有處理接受值,發現值被解釋了): <%=request.querystring("webjx")%>

<form action="<%=filepath%>">
你可以輸入“<hr>”等代碼看看:<input type="text" size="20" name="webjx"><input type="submit">
</form>
接受URL中的值(進行了urlencode編碼,不會執行): <%=tihuan(Server.URLEncode(request.querystring("webjx")))%>

呵呵,其實上面我是做的無用功啦,真正應該是在發送之前就該處理下的,不過對學習該方法的舉例確是個好方法:)

四,Server.MapPath

MapPath方法,具體的就是將指定的相對或虛擬路徑,映射到伺服器上相應的物理目錄上。
用法,也就是文法了,如下:

Server.MapPath(Path)

Path 指定要映射物理目錄的相對或虛擬路徑。若 Path 以一個正斜杠 (/) 或反斜線 (\) 開始,則 MapPath 方法返迴路徑時將 Path 視為完整的虛擬路徑。若 Path 不是以斜杠開始,則 MapPath 方法返回同本檔案中已有的路徑相對的路徑。這裡需要注意的是 MapPath 方法不檢查返回的路徑是否正確或在伺服器上是否存在。

當然這可以和Request.ServerVariables連起來使用看看。

5,mappath.asp

Request.ServerVariables("APPL_PHYSICAL_PATH") : <%=Request.ServerVariables("APPL_PHYSICAL_PATH")%><p>
Request.ServerVariables("PATH_INFO") : <%=Request.ServerVariables("PATH_INFO")%><p>
Request.ServerVariables("SCRIPT_NAME") : <%=Request.ServerVariables("SCRIPT_NAME")%><p>
Request.ServerVariables("URL") : <%=Request.ServerVariables("URL")%><p>
Request.ServerVariables("PATH_TRANSLATED") : <%=Request.ServerVariables("PATH_TRANSLATED")%><hr>
上面都是通過ServerVariables提取得出的值,下面就來運用mapath把一個虛擬位址轉變為實際的物理地址。<p>
Server.MapPath(Request.ServerVariables("URL")) :<%=Server.MapPath(Request.ServerVariables("URL"))%><p>
或者自己隨便寫個不存在的路徑,同樣能夠執行<p>
Server.MapPath("webjx.asp") : <%=Server.MapPath("webjx.asp")%><p>
再來個“/”的<p>
Server.MapPath("/webjx.asp") : <%=Server.MapPath("/webjx.asp")%><br>
Server.MapPath("\webjx.asp") : <%=Server.MapPath("\webjx.asp")%><p>

你會發現物理地址轉變到IIS預設根目錄下面了。
這就是如6to23之類的網站mappath的問題所在。還是虛擬機器主機好,即使是根,也還是自己網站的預設存放節點根。

注意測試的地址和根目錄下的地址,對應的是同一檔案夾(這就是虛擬機器主機),6to23之類是不會相同的。

有此些瞭解,對路徑的處理應該要好多了,再返回我的網站,看看我對資料庫的mappath路徑的處理方法,相信又是一個理解層次了。

五,Server.CreatObject

Server.CreateObject 這個方法恐怕是 ASP 中最為實用,也是最強勁的功能了。它可用於建立已經註冊到伺服器上的 ActiveX 組件執行個體。這是一個非常重要的特性,因為通過使用 ActiveX 組件能夠使你輕鬆地擴充 ActiveX 的能力,正是使用了 ActiveX 組件,你可以實現至關重要的功能,譬如資料庫連接、檔案訪問、廣告顯示和其他 VBScript 不能提供或不能簡單地依靠單獨使用 ActiveX 所能完成的功能。也正是因為這些組件才使得 ASP 具有了強大的生命力。

恩,那今天就主要把Server對象學習了下,感覺好象是每個都有用的,重要啊。還有,需要說明的,如果您從本處轉載,發現和本源件有差錯,比如代碼  、 < 、 >等等,根本就是被執行了的。都說明您的網站存在著這些問題。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.