本篇擷取重點:
一、Server物件
Server物件是 ASP 的內建物件之一,用於提供【ASP.NET】取得伺服器提供的各項資訊,包含對伺服器上的方法和屬性的訪問以及進行HTML編碼的功能。這些功能分別由Server物件相應的方法和屬性完成。
參考資料:
https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/258333/
二、Server物件的常用屬性及方法
屬性 | 說明 |
---|---|
MachineName | 查詢伺服器名稱。 |
ScriptTimeout | 設定指令碼程式執行的時間上限(單位S(秒)),預設時間為90秒,若設為0則將無限等待。 |
==================================================================
範例實作:
Response.Write(".MachineName屬性:");
Response.Write("伺服器機器名:" + Server.MachineName);
Response.Write("<br>.ScriptTimeout屬性:");
Response.Write("超時時間為:" + Server.ScriptTimeout);
頁面顯示:
==================================================================
方法 | 說明 |
---|---|
MapPath() | 傳回對應至指定虛擬路徑的實體檔案路徑。 |
URLEncode() | 將網址字串轉換為URL編碼,(預設)。 |
URLDecode() | 將URL編碼轉換為字串。 |
HTMLEncode() | 是對特殊字元進行編碼 ,避免將特殊字元的組合視為HTML的標籤, 所以事先進行編碼 ,直到瀏覽器後再對它們進行解碼 ,EX:編碼為“<B>>” 。 |
HTMLDecode() | 為預設,若特殊字元的組合符合HTML的標籤,將其視為HTML標籤。 |
Transfer() | 在伺服器上執行頁面轉向(須在同根目錄下),並保留瀏覽器端的 URL 地址 ,伺服器停止解析本頁,儲存轉向前的資料後,轉向至新頁面 ,後將轉向前儲存的資料加上新頁面的結果返回給瀏覽器。 |
==================================================================
範例實作:
Server.MapPath()
Response.Write("根目錄的實際路徑為:" + Server.MapPath("/"));//根目錄的實體檔案路徑
頁面顯示:
Server.UrlEncode()(預設)、Server.UrlDecode()
你是否曾在瀏覽網頁時,看過在網址欄內竟然包含中文、日文、甚至其他國家的文字字元,但當你將該網址複製並重新貼上後會發現,原本的其他國家文字字元被轉成一段由英文數字及符號組成的編碼,這就是URL編碼,(預設為UrlEncode)。
再讓我們實驗看看,
Response.Write(" <br />Server.UrlEncode下的熱門:" + Server.UrlEncode("熱門"));
Response.Write(" <br />Server.UrlDecode下的熱門:" + Server.UrlDecode("熱門"));
頁面顯示:
Server.HTMLDecode()(預設)、Server.HTMLEncode()
是否對特殊字元進行編碼,避免將特殊字元的組合視為HTML的標籤,所以事先進行編碼 ,直到瀏覽器後再對它們進行解碼 ,EX: < B > 編碼為" & l t ; b & g t ;" 。
Response.Write("<br />HTMLDecode方法下:<b>粗體字</b>"); //未對特殊字元進行編碼,故將(<b></b>)視為HTML的標籤。
Response.Write("<br />HTMLEncode方法下:" + Server.HtmlEncode("<b>粗體字</b>")); //已對特殊字元進行事先編碼,故能將(<b></b>)於頁面顯示。
頁面顯示:
Server.Transfer(),在下一篇與Server.Execute()/Response.Redirect()一起進行比較
==================================================================
此篇內容整理自多篇網路文章、PPT及自己的理解,但筆者也仍處在初階的學習過程,對程式概念的理解及判斷都尚不足,若有錯誤的地方,也煩請各位大大提點,先謝謝大家惹!!
明日(9/22)預定探討課題:
後日(9/23)預定探討課題:
Server是ASP時代的五大物件,為了讓ASP的程式員轉到ASP.NET不會不習慣才留下來的,不過這裡有個觀念要修正一下,Server是給"ASP.NET程式"取得伺服器端資訊,而不是給"使用者",基本上前端介面不太可能會需要用到Server的東西,就算是要用也要小心,因為Server是取得伺服器的一些重要訊息 (如主機名稱、IP之類的),不慎的使用會給駭客收集資訊的機會,增加被攻擊的可能風險。
有些方法也建議是改用 .NET Framework 本身提供的方法,Server的方法也只是保留方法相容性。
不過 Server 倒是有一個好用的方法:GetLastError(),可用來取得最後一次的例外,可做預先的錯誤處理。
謝謝朱大,您的意思是不是說,SERVER物件只是過渡期延續ASP時代的產物,在實務上,並不太會使用SERVER物件,反而會建議改用上述的.NET Framework本身提供的方法來取代!!
基本上現在多數的 Server 方法都是轉呼叫 .NET Framework 內相對應的物件和方法,當然也可以維持用 Server 物件操作,這是為了既有程式和操作的相容性。
了解,謝謝朱大