ASP.NET的內置對象介紹:
1.Response
2.Request
3.Server
4.Application
5.Session
6.Cookie
一、Request對象主要是讓服務器取得客戶端瀏覽器的一些數(shù)據(jù),包括從HTML表單用Post或者GET方法傳遞的參數(shù)、Cookie和用戶認證。因為Request對象是Page對象的成員之一,所以在程序中不需要做任何的聲明即可直接使用;
其類名為 HttpRequest
屬性很多,但方法很少,只有一個BinaryRead()
1.使用Request.Form屬性獲取數(shù)據(jù)
通過該屬性,讀取<Form></Form>之間的表單數(shù)據(jù).注意:提交方式要設置為“Post”。
與Get方法相比較,使用Post方法可以將大量數(shù)據(jù)發(fā)送到服務器端
2.利用Request.QueryString屬性獲取數(shù)據(jù)
Request對象的QuerySting屬性可以獲取 HTTP 查詢字符串變量集合 。 通過該屬性,我們可以讀取地址信息 http://localhost/aaa.aspx?uid=tom&pwd=abc 其中標識為紅色部分的數(shù)據(jù).
注意:提交方式要設置為“Get”
3.問題:Request.Form用于表單提交方式為Post的情況,而Request.QueryString用于表單提交方式為Get的情況,如果用錯,則獲取不到數(shù)據(jù)。
解決方法:利用Request(“元素名”)來簡化操作。
4.Request.ServerVariables("環(huán)境變量名稱")
類似的還有:UserHostAddress,Browser,Cookies,ContentType,IsAuthenticated,Item,Params
二、Response對象用語輸出數(shù)據(jù)到客戶端,包括向瀏覽器輸出數(shù)據(jù)、重定向瀏覽器到另一個URL或向瀏覽器輸出Cookie文件。
其類名為httpResponse
屬性和方法
Write() 向客戶端發(fā)送字符串信息
BufferOutPut屬性 是否使用緩存
Clear() 清除緩存
Flush() 強制輸出緩存的所有數(shù)據(jù)
Redirect() 網頁轉向地址
End() 終止當前頁的運行
WriteFile() 讀取一個文件,并且寫入客戶端輸出流
(實質:打開文件,并且輸出到客戶端。)
1.Response.Write 變量數(shù)據(jù)或字符串
Response.Write (變量數(shù)據(jù)或字符串)
<%=…%>
Response.Write("<script language=javascript>alert('歡迎學習ASP.NET')</script>")
Response.Write("<script>window.open('WebForm2.aspx')</script>")
2.Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉到另一個網頁。
例如:
Response.Redirect("http://www./")
3. Response.End() 終止當前頁的運行
4.Response.WriteFile(FileName)
(其中,F(xiàn)ileName 指代需向瀏覽器輸出的文件的文件名)
三、Server對象提供對服務器上的方法和屬性進行的訪問 .其類名稱是HttpServerUtility.
Server對象的主要屬性有:
MachineName:獲取服務器的計算機名稱。
ScriptTimeout:獲取和設置請求超時(以秒計)。
方法名稱 說明
CreateObject 創(chuàng)建 COM 對象的一個服務器實例。
Execute 執(zhí)行當前服務器上的另一個aspx頁,執(zhí)行完該頁后再返回本頁繼續(xù)執(zhí)行
HtmlEncode 對要在瀏覽器中顯示的字符串進行HTML編碼并返回已編碼的字符串。
HtmlDecode 對HTML編碼的字符串進行解碼,并返回已解碼的字符串。
MapPath 返回與 Web 服務器上的指定虛擬路徑相對應的物理文件路徑。
Transfer 終止當前頁的執(zhí)行,并為當前請求開始執(zhí)行新頁。
UrlEncode 將代表URL的字符串進行編碼,以便通過 URL 從 Web 服務器到客戶端進行可靠的 HTTP 傳輸。
UrlDecode 對已被編碼的URL字符串進行解碼,并返回已解碼的字符串。
UrlPathEncode 對 URL 字符串的路徑部分進行 URL 編碼,并返回已編碼的字符串。
編碼:
Server.HtmlEncode(“HTML代碼”)
解碼:
Server.HtmlDecode(“已編碼的HTML”)
1.Server對象的MapPath方法將虛擬路徑或相對于當前頁的相對路徑轉化為Web 服務器上的物理文件路徑。
語法:Server.MapPath(“虛擬路徑”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
四、Application對象在實際網絡開發(fā)中的用途就是記錄整個網絡的信息,如上線人數(shù)、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,并在服務器運行期間持久的保存數(shù)據(jù)。而且Application對象還有控制訪問應用層數(shù)據(jù)的方法和可用于在應用程序啟動和停止時觸發(fā)過程的事件。
1.使用Application對象保存信息
使用Application對象保存信息
Application(“鍵名”) = 值
或
Application(“鍵名”,值)
獲取Application對象信息
變量名 = Application(“鍵名”)
或:變量名 = Application.Item(“鍵名”)
或:變量名 = Application.Get(“鍵名”)
更新Application對象的值
Application.Set(“鍵名”, 值)
刪除一個鍵
Application.Remove(“鍵名”, 值)
刪除所有鍵
Application.RemoveAll()
或Application.Clear()
2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現(xiàn)多個用戶修改同一個Application命名對象,造成數(shù)據(jù)不一致的問題。
HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應用程序狀態(tài)變量。
關于鎖定與解鎖
鎖定:Application.Lock()
訪問:Application(“鍵名”) = 值
解鎖:Application.Unlock()
注意:Lock方法和UnLock方法應該成對使用。
可用于網站訪問人數(shù),聊天室等設備
3. 使用Application事件
在ASP.NET 應用程序中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應用程序文件,它包含用于響應 ASP.NET或HTTP模塊引發(fā)的應用程序級別事件的代碼。
Global.asax 文件提供了7個事件,其中5個應用于Application對象
事件名稱 說明
Application_Start 在應用程序啟動時激發(fā)
Application_BeginRequest 在每個請求開始時激發(fā)
Application_AuthenticateRequest 嘗試對使用者進行身份驗證時激發(fā)
Application_Error 在發(fā)生錯誤時激發(fā)
Application_End 在應用程序結束時激發(fā)
五、Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。
Session對象在.NET中對應HttpSessionState類,表示“會話狀態(tài)”,可以保存與當前用戶會話相關的信息。
Session對象用于存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應用程序的頁面切換時,Session對象的變量不會被清除。
對于一個Web應用程序而言,所有用戶訪問到的Application對象的內容是完全一樣的;而不同用戶會話訪問到的Session對象的內容則各不相同。 Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。
(1)將新的項添加到會話狀態(tài)中
語法格式為:
Session ("鍵名") = 值
或者
Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態(tài)中的值
語法格式為:
變量 = Session ("鍵名")
或者
變量 = Session.Item("鍵名")
(3)刪除會話狀態(tài)集合中的項
語法格式為:
Session.Remove("鍵名")
(4)清除會話狀態(tài)中的所有值
語法格式為:
Session.RemoveAll()
或者
Session.Clear()
(5)取消當前會話
語法格式為:
Session.Abandon()
(6)設置會話狀態(tài)的超時期限,以分鐘為單位。
語法格式為:
Session.TimeOut = 數(shù)值
Global.asax 文件中有2個事件應用于Session對象
事件名稱 說明
Session_Start 在會話啟動時激發(fā)
Session_End 在會話結束時激發(fā)
六、Cookie就是Web服務器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘鍵/值’對的形式存儲。
Cookie是保存在客戶機硬盤上的一個文本文件,可以存儲有關特定客戶端、會話或應用程序的信息,在.NET中對應HttpCookie類。
有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態(tài)結束它將不復存在;后者則具有確定的過期日期,在過期之前Cookie在用戶的計算機上以文本文件的形式存儲。
在服務器上創(chuàng)建并向客戶端輸出Cookie可以利用Response對象實現(xiàn)。
Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。
Response對象用語輸出數(shù)據(jù)到客戶端,包括向瀏覽器輸出數(shù)據(jù)、重定向瀏覽器到另一個URL或向瀏覽器輸出Cookie文件。
其類名為httpResponse
屬性和方法
Write() 向客戶端發(fā)送字符串信息
BufferOutPut屬性 是否使用緩存
Clear() 清除緩存
Flush() 強制輸出緩存的所有數(shù)據(jù)
Redirect() 網頁轉向地址
End() 終止當前頁的運行
WriteFile() 讀取一個文件,并且寫入客戶端輸出流
(實質:打開文件,并且輸出到客戶端。)
1.Response.Write 變量數(shù)據(jù)或字符串
Response.Write (變量數(shù)據(jù)或字符串)
<%=…%>
例如: <%
int i;
i = 0;
for (; i < 10; i++)
Response.Write(i.ToString() + "<br />");
%>
<hr />
<%
for (i=0; i < 10; i++)
{
%>
*<br />
<%
}
%>
Response.Write("<script language=javascript>alert('歡迎學習ASP.NET')</script>")
Response.Write("<script>window.open('WebForm2.aspx')</script>")
添加新項,一般處理程序,運行改頁面時,可以實現(xiàn)資料的下載。(必須先在根目錄下新建1.xls文件)
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IhttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "Application/msexcel";
context.Response.WriteFile("1.xls");
}
public bool IsReusable
{
get {
return false;
}
}
}
2.Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉到另一個網頁。
例如:
Response.Redirect("http://www./")
3. Response.End() 終止當前頁的運行
4.Response.WriteFile(FileName)
其中:
FileName 指代需向瀏覽器輸出的文件的文件名
Server對象提供對服務器上的方法和屬性進行的訪問 .其類名稱是HttpServerUtility.
Server對象的主要屬性有:
MachineName:獲取服務器的計算機名稱。
ScriptTimeout:獲取和設置請求超時(以秒計)。
方法名稱 說明
CreateObject 創(chuàng)建 COM 對象的一個服務器實例。
Execute 執(zhí)行當前服務器上的另一個aspx頁,執(zhí)行完該頁后再返回本頁繼續(xù)執(zhí)行
HtmlEncode 對要在瀏覽器中顯示的字符串進行HTML編碼并返回已編碼的字符串。
HtmlDecode 對HTML編碼的字符串進行解碼,并返回已解碼的字符串。
MapPath 返回與 Web 服務器上的指定虛擬路徑相對應的物理文件路徑。
Transfer 終止當前頁的執(zhí)行,并為當前請求開始執(zhí)行新頁。
UrlEncode 將代表URL的字符串進行編碼,以便通過 URL 從 Web 服務器到客戶端進行可靠的 HTTP 傳輸。
UrlDecode 對已被編碼的URL字符串進行解碼,并返回已解碼的字符串。
UrlPathE ncode 對 URL 字符串的路徑部分進行 URL 編碼,并返回已編碼的字符串。
編碼:
Server.HtmlEncode(“HTML代碼”)
解碼:
Server.HtmlDecode(“已編碼的HTML”)
1.Server對象的MapPath方法將虛擬路徑或相對于當前頁的相對路徑轉化為Web 服務器上的物理文件路徑。
語法:Server.MapPath(“虛擬路徑”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
在default .aspx的HyperLink將其屬性NavigateUrl設為Default2.aspx?i=計算機
再在代碼中定義this.Label1.Text=Server.UrlDecode( Request.QueryString["i"]);
當點擊HyperLink時可以看到LABEL的值,
但此時并不是“計算機”。
單純的文本用URL會講值傳掉。
可以先定義this.Label2.Text= Server.UrlEncode("計算機");
瀏覽頁面后將Label2的值復制,
再在地址后面加上i=復制Label2的值
點擊回車鍵之后可以看到此時的LABEL1 顯示的是完整的“計算機”。
Application對象在實際網絡開發(fā)中的用途就是記錄整個網絡的信息,如上線人數(shù)、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,并在服務器運行期間持久的保存數(shù)據(jù)。而且Application對象還有控制訪問應用層數(shù)據(jù)的方法和可用于在應用程序啟動和停止時觸發(fā)過程的事件。
1.使用Application對象保存信息
使用Application對象保存信息
Application(“鍵名”) = 值
或
Application(“鍵名”,值)
獲取Application對象信息
變量名 = Application(“鍵名”)
或:變量名 = Application.Item(“鍵名”)
或:變量名 = Application.Get(“鍵名”)
更新Application對象的值
Application.Set(“鍵名”, 值)
刪除一個鍵
Application.Remove(“鍵名”, 值)
刪除所有鍵
Application.RemoveAll()
或Application.Clear()
2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現(xiàn)多個用戶修改同一個Application命名對象,造成數(shù)據(jù)不一致的問題。
HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應用程序狀態(tài)變量。
關于鎖定與解鎖
鎖定:Application.Lock()
訪問:Application(“鍵名”) = 值
解鎖:Application.Unlock()
注意:Lock方法和UnLock方法應該成對使用。
可用于網站訪問人數(shù),聊天室等設備
3. 使用Application事件
在ASP.NET 應用程序中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應用程序文件,它包含用于響應 ASP.NET或HTTP模塊引發(fā)的應用程序級別事件的代碼。
Global.asax 文件提供了7個事件,其中5個應用于Application對象
事件名稱 說明
Application_Start 在應用程序啟動時激發(fā)
Application_BeginRequest 在每個請求開始時激發(fā)
Application_AuthenticateRequest 嘗試對使用者進行身份驗證時激發(fā)
Application_Error 在發(fā)生錯誤時激發(fā)
Application_End 在應用程序結束時激發(fā)
在Global.asax中,定義:
void Application_Start(object sender, EventArgs e) { // 在應用程序啟動時運行的代碼 Application["k1"] = 1;
}
再在defalut.aspx的PAGE_LOAD中定義:
this.Label2.Text = Application["k1"].ToString();
打開此頁面時候Label2顯示的是 1;
但當在defalut2.aspx的PAGE_LOAD中定義:
Application["k1"] = 2;
再打開 defalut.aspx時顯示的是2;
Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。
Session對象在.NET中對應HttpSessionState類,表示“會話狀態(tài)”,可以保存與當前用戶會話相關的信息。
Session對象用于存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應用程序的頁面切換時,Session對象的變量不會被清除。
對于一個Web應用程序而言,所有用戶訪問到的Application對象的內容是完全一樣的;而不同用戶會話訪問到的Session對象的內容則各不相同。 Session可以保存變量,該變量只能供一個用戶使用,也就是說,每一個網頁瀏覽者都有自己的Session對象變量,即Session對象具有唯一性。
(1)將新的項添加到會話狀態(tài)中
語法格式為:
Session ("鍵名") = 值
或者
Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態(tài)中的值
語法格式為:
變量 = Session ("鍵名")
或者
變量 = Session.Item("鍵名")
(3)刪除會話狀態(tài)集合中的項
語法格式為:
Session.Remove("鍵名")
(4)清除會話狀態(tài)中的所有值
語法格式為:
Session.RemoveAll()
或者
Session.Clear()
(5)取消當前會話
語法格式為:
Session.Abandon()
(6)設置會話狀態(tài)的超時期限,以分鐘為單位。
語法格式為:
Session.TimeOut = 數(shù)值
Global.asax 文件中有2個事件應用于Session對象
事件名稱 說明
Session_Start 在會話啟動時激發(fā)
Session_End 在會話結束時激發(fā)
在defalut.aspx的BUTTON1中寫:
protected void Button1_Click(object sender, EventArgs e) { Session["u"] = this.TextBox1.Text; Session.Timeout = 1;
}
再在defalut2.aspx的PAGE_LOAD中定義:
this.Label2.Text=(Session["u"] == null) ? "" : Session["u"].ToString();
瀏覽defalut.aspx,在this.TextBox1.Text輸入內容,再進入到defalut2.aspx中可以看到輸入的值。但等一分鐘后再刷新該頁面,沒有值顯示 因為 Session.Timeout = 1已經產生了過期時間。
Cookie就是Web服務器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以‘鍵/值’對的形式存儲。
Cookie是保存在客戶機硬盤上的一個文本文件,可以存儲有關特定客戶端、會話或應用程序的信息,在.NET中對應HttpCookie類。
有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態(tài)結束它將不復存在;后者則具有確定的過期日期,在過期之前Cookie在用戶的計算機上以文本文件的形式存儲。
在服務器上創(chuàng)建并向客戶端輸出Cookie可以利用Response對象實現(xiàn)。
Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。
通過Request對象的Cookies集合來訪問Cookie
在defalut.aspx的BUTTON1中寫:
protected void Button1_Click(object sender, EventArgs e) { HttpCookie hc = new HttpCookie("u"); hc.Value = this.TextBox1.Text; hc.Expires = System.DateTime.Now.AddDays(30); Response.Cookies.Add(hc); }
此時在頁面的工具菜單中,可以在Cookies文件查看到剛才新增的文件
|