一、了解Server對(duì)象
Server對(duì)象提供對(duì)服務(wù)器上的方法和屬性的訪問(wèn)以及進(jìn)行HTML編碼的功能。這些功能分別由Server對(duì)象相應(yīng)的方法和屬性完成。
二、Server對(duì)象的常用屬性
(1).MachineName
(2).ScriptTimeout:屬性用于設(shè)置腳本程序執(zhí)行的時(shí)間,適當(dāng)?shù)卦O(shè)置腳本程序的ScriptTimeout可以提高整個(gè)Web應(yīng)用程序的效率。語(yǔ)法如下:
Server.ScriptTimeout=time;(以s(秒)為單位)
ScriptTimeout屬性的最短時(shí)間默認(rèn)為90 s。對(duì)于一些邏輯簡(jiǎn)單、活動(dòng)內(nèi)容較少的腳本程序該值已經(jīng)足夠。但在執(zhí)行一些活動(dòng)內(nèi)容較多的腳本程序時(shí),就顯得小了些。比如訪問(wèn)數(shù)據(jù)庫(kù)的腳本程序,必須設(shè)置較大的ScriptTimeout屬性值,否則腳本程序就不能正常執(zhí)行完畢。
復(fù)制代碼 代碼如下:
Response.Write("服務(wù)器機(jī)器名:" + Server.MachineName);//服務(wù)器機(jī)器名:IBM
Response.Write("超時(shí)時(shí)間為:" + Server.ScriptTimeout);//超時(shí)時(shí)間為:30000000
三、Server對(duì)象的主要方法
四、Server對(duì)象的常見(jiàn)應(yīng)用:
(1).執(zhí)行其他ASP.NET網(wǎng)頁(yè)
使用Server對(duì)象的Execute方法可以在當(dāng)前頁(yè)面中執(zhí)行同一Web服務(wù)器上的另一頁(yè)面,當(dāng)該頁(yè)面執(zhí)行完畢后,控制流程將重新返回到原頁(yè)面中發(fā)出Server.Execute方法調(diào)用的位置。被調(diào)用的頁(yè)面應(yīng)是一個(gè).aspx網(wǎng)頁(yè),因此,通過(guò)Server.Execute方法調(diào)用可以將一個(gè).aspx頁(yè)面的輸出結(jié)果插入到另一個(gè).aspx頁(yè)面中。Server.Execute方法語(yǔ)法如下:
Server.Execute (path)
在WebForm1頁(yè)面中:
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write("P>調(diào)用 Execute 方法之前/P>");
Server.Execute("Page2.aspx");//使用Server.Execute(Path)執(zhí)行其他ASP.NET頁(yè)面。這里將Page2.aspx的輸出結(jié)果插入到當(dāng)前頁(yè)面
//Server.Execute("http://www.163.com");//程序不能執(zhí)行,必須是相對(duì)路徑
Response.Write("P>調(diào)用 Execute 方法之后/P>");
}
在page.aspx頁(yè)面中
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write("這是page2.aspx網(wǎng)頁(yè)");
}
則運(yùn)行結(jié)果為:
(2).將流程控制轉(zhuǎn)移到其他ASP.NET網(wǎng)頁(yè)
使用Server對(duì)象的Transfer方法可以終止當(dāng)前頁(yè)的執(zhí)行,并將執(zhí)行流程轉(zhuǎn)入同一Web服務(wù)器的另一個(gè)頁(yè)面。被調(diào)用的頁(yè)面應(yīng)是一個(gè).aspx頁(yè)面,在頁(yè)面跳轉(zhuǎn)過(guò)程中,Request等對(duì)象保存的信息不變,這意味著從頁(yè)面A跳轉(zhuǎn)到頁(yè)面B后可以繼續(xù)使用頁(yè)面A中提交的數(shù)據(jù)。此外,由于Server.Transfer方法調(diào)用是在服務(wù)器端進(jìn)行的,客戶端瀏覽器并不知道服務(wù)器端已經(jīng)執(zhí)行了一次頁(yè)面跳轉(zhuǎn),所以實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)后瀏覽器地址欄仍將保存頁(yè)面A的URL信息,這樣還可以避免不必要的網(wǎng)絡(luò)通信,從而獲得更好的性能和瀏覽效果。Server.Transfer方法如下:
Server.Transfer(path)
提示:參數(shù)path指定在服務(wù)器上要執(zhí)行的新頁(yè)的URL路徑,在此URL后面也可以附加一些查詢字符串變量的名稱/值對(duì)
在WebForm1頁(yè)面中:
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write("P>調(diào)用 Transfer 方法之前/P>");
//Response.Redirect("Page2.aspx");
Server.Transfer("Page2.aspx");
//使用Server.Transfer(path)終止當(dāng)前頁(yè)的執(zhí)行,所以執(zhí)行到這一行就終止了,也就是說(shuō)后面的不再執(zhí)行;
//然后將執(zhí)行流程轉(zhuǎn)入同一Web服務(wù)器的另一個(gè)頁(yè)面。也就是page2.aspx頁(yè)面中了。在頁(yè)面跳轉(zhuǎn)過(guò)程中,Request等對(duì)象保存的信息不變
//這意味著從頁(yè)面A跳轉(zhuǎn)到頁(yè)面B后可以繼續(xù)使用頁(yè)面A中提交的數(shù)據(jù):那么在page2.apsx頁(yè)面中就能輸出Server.Transfer(path)之前的數(shù)據(jù)了。
//Server.Transfer("www.163.com");//這樣不行,只能是虛擬路徑
Response.Write("P>調(diào)用 Transfer 方法之后/P>");
}
在Page2頁(yè)面:
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write("P>這是 Page2.aspx 的執(zhí)行結(jié)果/P>");
}
則運(yùn)行結(jié)果:
如果我們換成了Response.Redirect("Page2.aspx");則只能實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)功能了。
引述:ASP.NET頁(yè)面?zhèn)髦档娜N方式
復(fù)制代碼 代碼如下:
(1).使用QueryString
(2).使用Session變量
(3).使用Server.Transfer
(3).將虛擬路徑轉(zhuǎn)換為物理文件路徑
在Web窗體頁(yè)中經(jīng)常需要訪問(wèn)文件或文件夾,此時(shí)往往要求將虛擬路徑轉(zhuǎn)換為物理文件路徑。MapPath方法將指定的相對(duì)或虛擬路徑映射到服務(wù)器上相應(yīng)的物理目錄上。Web服務(wù)器中的多個(gè)Web應(yīng)用程序一般都按照各自不同的功能存放于不同的目錄中。
使用虛擬目錄后,客戶端仍然可以利用虛擬路徑存取網(wǎng)頁(yè),這就是互聯(lián)網(wǎng)用戶在瀏覽器中常見(jiàn)的網(wǎng)頁(yè)的URL,但此時(shí)用戶無(wú)法知道該網(wǎng)頁(yè)的實(shí)際路徑(實(shí)際存放位置)。但如果確實(shí)需要知道某網(wǎng)頁(yè)文件的實(shí)際路徑,則可利用MapPath方法。MapPath方法的語(yǔ)法如下:
Server.MapPath(Path)
注意:其中參數(shù)Path表示指定要映射物理目錄的相對(duì)或虛擬路徑。執(zhí)行MapPath方法后,將返回與path相對(duì)應(yīng)的物理文件路徑。
解惑:相對(duì)路徑、絕對(duì)路徑、物理路徑、虛擬路徑
復(fù)制代碼 代碼如下:
(1).相對(duì)路徑:相對(duì)當(dāng)前目錄的路徑、或相對(duì)某個(gè)目錄的路徑,這里主要體現(xiàn)“相對(duì)”的概念
(2).絕對(duì)路徑:從網(wǎng)站的根路徑為最高層開(kāi)始的路徑,如:C:\Website\web1\index.html
(3).物理路徑:實(shí)際磁盤中的路徑,可以是相對(duì)路徑、也可以是絕對(duì)路徑
(4).虛擬路徑:是服務(wù)器映射出來(lái)的路徑,如/myweb
(這里引用了CSDN博友:flytosea8的解釋:鏈接地址:http://bbs.csdn.net/topics/70115404)
虛擬路徑、物理路徑
用IIS舉個(gè)例子:
WEB服務(wù)目錄是d:\test
那么用HTTP訪問(wèn)網(wǎng)站根目錄的時(shí)候,其實(shí)訪問(wèn)的是d:\test,那么其中虛擬路徑就是\(根),物理路徑就是d:\test
一般虛擬路徑、物理路徑的提法在WEB、FTP服務(wù)中比較多見(jiàn)。
相對(duì)路徑和絕對(duì)路徑就比較廣泛了,哪兒都看得到
相對(duì)路徑:比如D:\TEST1\TEST2\TEST3
那么TEST2是TEST1的下級(jí)路徑,TEST2又是TEST3的上級(jí)路徑,所以上級(jí)路徑或者下級(jí)路徑都是相對(duì)而言的。一般上級(jí)路徑可以用..來(lái)表示,當(dāng)前路徑可以用.來(lái)表示。
絕對(duì)路徑:比如c:\根路徑都是絕對(duì)了,任何路徑相對(duì)于根路徑都有一個(gè)絕對(duì)的最近的路徑,也是絕對(duì)路徑。
如果你想想別人指路的話,就可以悟出什么是相對(duì)的,什么是絕對(duì)的
相對(duì)的指路方法:從“這兒”向前走,右拐就到了
絕對(duì)的指路方法:汽車站向東100米(如果汽車站是絕對(duì)的位置),絕對(duì)的指路方法不依賴于指路的人在什么地方
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write("Web站點(diǎn)的根目錄為:"+Server.MapPath("/")+"br>");
Response.Write("當(dāng)前虛擬目錄的實(shí)際路徑為:"+Server.MapPath("./")+"br>");//E:\asp.net\Server對(duì)象\code\
Response.Write("當(dāng)前網(wǎng)頁(yè)的實(shí)際路徑為:"+Server.MapPath(Request.FilePath)+"br>");//E:\asp.net\Server對(duì)象\code\WebForm1.aspx
Response.Write("當(dāng)前網(wǎng)頁(yè)的實(shí)際路徑為:"+Server.MapPath("webform2.aspx")+"br>");//E:\asp.net\Server對(duì)象\code\WebForm2.aspx
}
(4).字符串的編碼與解碼
在某些情況下,可能需要在網(wǎng)頁(yè)中顯示“段落標(biāo)記p>”之類的內(nèi)容,而不希望瀏覽器將其中的p>解釋為HTML語(yǔ)言中的段落標(biāo)記;在上述場(chǎng)合,應(yīng)當(dāng)調(diào)用Server對(duì)象的HtmlEncode方法對(duì)要在瀏覽器中顯示的字符串進(jìn)行編碼
有時(shí)候,在傳遞參數(shù)時(shí),是將數(shù)據(jù)附在網(wǎng)址后面?zhèn)鬟f,但是如果遇到一些如“#”等特殊字符的時(shí)候,就會(huì)讀不到這些字符后面的參數(shù)。所以需要在傳遞特殊字符的時(shí)候,需先將要傳遞的內(nèi)容先以UrlEncode編碼,這樣才可以保證所傳遞的值可以被順利讀到。
另外有些服務(wù)器對(duì)中文不能很好的支持,這時(shí)候也需要利用UrlEncode對(duì)其進(jìn)行編碼,以被服務(wù)器所識(shí)別。
復(fù)制代碼 代碼如下:
HtmlEncode||HtmlDecode:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write(Server.HtmlEncode("粗體標(biāo)記為:B>粗體文字/B>"));//HtmlEncode對(duì)字符串進(jìn)行HTML編碼并返回編碼后的字符串,所以這個(gè)原樣輸出
Response.Write("br>");
Response.Write(Server.HtmlDecode("粗體標(biāo)記為:B>粗體文字/B>"));//HtmlDecode對(duì)字符串進(jìn)行HTML解碼并返回解碼后的字符串,所以這個(gè)后面加粗
}
復(fù)制代碼 代碼如下:
UrlEncode||UrlDecode:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Write("A href='1.aspx?data=" + Server.UrlDecode("name@#163.com") + "'>沒(méi)有編碼的參數(shù)內(nèi)容/A>br>");//在1.aspx頁(yè)面輸出:name@
Response.Write("A href='1.aspx?data=name@#163.com'>沒(méi)有編碼的參數(shù)內(nèi)容/A>br>");//在1.aspx頁(yè)面輸出:name@
Response.Write("A href='1.aspx?data=" + Server.UrlEncode("name@#163.com") + "'>編碼的參數(shù)內(nèi)容/A>br>");//在1.aspx頁(yè)面輸出:name@#163.com
Response.Write(Server.UrlDecode("name@#163.com"));//對(duì)字符串進(jìn)行URL解碼,這里輸出:name@#163.com
Response.Write("br>");
Response.Write(Server.UrlEncode("name@#163.com"));//對(duì)字符串進(jìn)行URL編碼,這里輸出:name%40%23163.com
Response.Write("br>");
Response.Write(Server.UrlDecode("中文"));//輸出:中文
Response.Write("br>");
Response.Write( Server.UrlEncode("中文"));//輸出:%e4%b8%ad%e6%96%87
Response.Write("br>");
Response.Write(Server.UrlEncode("english"));//輸出:english
Response.Write("br>");
Response.Write(Server.UrlDecode("english"));//輸出:english
}
您可能感興趣的文章:- ASP.NET內(nèi)置對(duì)象之Application對(duì)象
- javascript function、指針及內(nèi)置對(duì)象
- JavaScript 核心參考教程 內(nèi)置對(duì)象
- js內(nèi)置對(duì)象 學(xué)習(xí)筆記
- javascript 基礎(chǔ)篇3 類,回調(diào)函數(shù),內(nèi)置對(duì)象,事件處理
- jsp內(nèi)置對(duì)象及方法詳細(xì)介紹
- Asp.net內(nèi)置對(duì)象之Cookies(簡(jiǎn)介/屬性方法/基本操作及實(shí)例)
- Asp.net內(nèi)置對(duì)象之Request對(duì)象(概述及應(yīng)用)
- JSP內(nèi)置對(duì)象:Request和Response的簡(jiǎn)單介紹及使用
- 學(xué)習(xí)Java九大內(nèi)置對(duì)象