ASP程式設計入門高階(七) 內建物件Server

2021-03-31 08:56:59 字數 3979 閱讀 1134

server 物件提供對伺服器上的方法和屬性的訪問 , 其中大多數方法和屬性是作為實用程式的功能服務。(iis help翻譯)

有了 server 物件,你就可以在伺服器上啟動 activex 物件例程,並使用 active server 服務提供象 html 和 url 編碼這樣的函式。

一、script.scripttimeout

在指令碼執行超過一段時間之後,即作超時處理。

伺服器一般的預設指令碼執行時間是90秒。

你可以從「inter***資訊服務」中「預設web站點」的屬性彈出框中看出,你也可以自己設定。

[img]images/win2k.gif[/img]

呵呵,上面的可不是,900秒了。

應該是「主目錄」標籤中的「配置」對話方塊中,winxp一樣。

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

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

1.time.asp

<%startime=timer()%>

到下面看執行的時間

<%

for i= 1 to 5000

response.write("")

next

%>

當然中間還可以新增其它內容。

<%endtime=timer()%>

<%=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 方法的測試。

這裡就另起一行,說明**被執行。 ")%>

<%response.write server.htmlencode("這是對 htmlencode 方法的測試。

這裡應該不會另起一行,也就_

是**沒有被執行了。 ")%>

這在許多**,論壇都存在的一些bug,不信你可以到各論壇試試:敲入 就是沒有,急死你呢:)當然htmlencode只是其中的乙個原因,最主要的還是ubb**的轉換。不過關於這點我也已經除錯解決了。

除錯位址參看 .**bruce.***/juven/showart.asp

當然經典論壇不存在這問題,要不你也不會看到效果了。

三、server.urlencode

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

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

3.urlencode.asp

<%filepath=request.servervariables("script_name")%>

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

接受url中的值(進行了urlencode編碼,不會執行): <%=server.urlencode(request.querystring("**bruce"))%>

當然你會發現,雖然不執行了,但會出現「<」變成了「%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,"空格我不知道,呵呵。哪個告訴我下:)"," ")

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("**bruce")%>

接受url中的值(進行了urlencode編碼,不會執行): <%=tihuan(server.urlencode(request.querystring("**bruce")))%>

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

測試我的位址http://.**bruce.***/server.asp

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

五、server.creatobject

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

不過,在我們沒有談及連線資料庫之前,這個先空著,「要得好,到臨了」:)等我們接觸到資料庫連線的時候再說不遲。

今天就主要把server物件學習了下,感覺好象是每個都有用的,重要啊。

還有,需要說明的,如果您從本處**,發現和本源件有差錯,比如**  、 < 、 >等等,根本就是被執行了的。都說明您的站點存在著這些問題。

ASP程式設計入門高階 Application

1,num.asp 上面的程式,你會發現每重新整理一次,都會記數累加,如按ip值訪問來記數的話,則建立乙個session。2,vnum.asp if session visitnum then session visitnum visited end if 當然需要注意的是 記數要確保伺服器不被重啟...

ASP程式設計入門高階(六) Cookies講座

乙個 cookie 就是乙個唯一標識客戶的標記,cookie 可以包含在乙個對話期或幾個對話期之間某個 web 站點的所有頁面共享的資訊,使用 cookie 還可以在頁面之間交換資訊。這項功能經常被使用在要求認證客戶密碼以及電子公告板 web 聊天室等 asp 程式中。當然,cookie也有一些不足...

ASP程式設計入門高階(六) Cookies講座

dim num num request.cookies visitnum if num 0 then num num 1 response.write 您已是第 num 次訪問本站點了。else response.write 歡迎您首次訪問本站。num 1 end if response.cooki...