(1)簡述ASP.NET內置對象。 答:ASP.NET提供了內置對象有Page、Request、Response、Application、Session、Server、Mail和Cookies。這些對象使用戶更容易收集通過瀏覽器請求發送的信息、響應瀏覽器以及存儲用戶信息,以實現其他特定的狀態管理和頁 ...
(1)簡述ASP.NET內置對象。
答:ASP.NET提供了內置對象有Page、Request、Response、Application、Session、Server、Mail和Cookies。這些對象使用戶更容易收集通過瀏覽器請求發送的信息、響應瀏覽器以及存儲用戶信息,以實現其他特定的狀態管理和頁面信息的傳遞。
(2)簡述Response對象。
答:Response對象用來訪問所創建的並客戶端的響應,輸出信息到客戶端,它提供了標識伺服器和性能的HTTP變數,發送給瀏覽器的信息和在cookie中存儲的信息。它也提供了一系列用於創建輸出頁面的方法,如無所不在的Response . Write方法。
(3)簡述Request對象。
答:Request對象是用來獲取客戶端在請求一個頁面或傳送一個Form時提供的所有信息,這包括能夠標識瀏覽器和用戶的HTTP變數,存儲在客戶端的cookie信息以及附在URL後面的值(查詢字元串或頁面中< Form>段中的HTML控制項內的值)。
(4)簡述Application對象。
答:在asp.net環境下,Application對象來自HttpApplictionStat類。它可以在多個請求、連接之間共用公用信息,也可以在各個請求連接之間充當信息傳遞的管道。使用Application對象來保存我們希望傳遞的變數。由於在整個應用程式生存周期中,Application對象都是有效的,所以在不同的頁面中都可以對它進行存取,就像使用全局變數一樣方便。
(5)簡述Session對象。
答:Session對象就是伺服器給客戶端的一個編號。當一臺WEB伺服器運行時,可能有若幹個用戶瀏覽正在瀏覽這台伺服器上的網站。當每個用戶首次與這台WWW伺服器建立連接時,他就與這個伺服器建立了一個Session,同時伺服器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。特別說明的是Session對象的變數只是對一個用戶有效,不同的用戶的會話信息用不同的Session對象的變數存儲。在網路環境下Session對象的變數是有生命周期的,如果在規定的時間沒有對Session對象的變數刷新,系統會終止這些變數。
(6)簡述Server對象。
答:Server對象提供對伺服器上的方法和屬性的訪問。其中大多數方法和屬性是作為實用程式的功能服務的。Server對象也是Page對象的成員之一,主要提供一些處理頁面請求時所需的功能;例如建立COM對象、將字元串的編解碼等工作。
(7)簡述Cookie對象。
答:cookie是一小塊由瀏覽器存貯在客戶端系統上(硬碟)的文本,是一種標記。由WEB伺服器嵌入用戶瀏覽器中,以便標識用戶,且隨同每次用戶請求發往WEB伺服器。Cookies的值比A S P.NET其他集合(例如Form和Server Variables )的值要複雜得多。
(8)簡述Mail對象。
答:ASP.NET被賦予了一個發送Email的新對象,名為SmtpMail,實際上Mail對象由System.Web.Mail類庫實現(Class Library)。這個類庫由MailMessage對象、SmtpMail對象、MailFormat對象和MailAttachment對象組成,它們相互合作,完成E-mail的發送。
ASP.NET的內置對象介紹
1.Response
2.Request
3.Server
4.Application
5.Session
6.Cookie
一、Response
Response對象用語輸出數據到客戶端,包括向瀏覽器輸出數據、重定向瀏覽器到另一個URL或向瀏覽器輸出Cookie文件。
其類名為httpResponse
屬性和方法 :
1、Write() 向客戶端發送字元串信息 示例:Response.Write (變數數據或字元串)
2、BufferOutPut屬性 是否使用緩存
3、Clear() 清除緩存
4、Flush() 強制輸出緩存的所有數據
5、Redirect() 網頁轉向地址 Response對象的Redirect方法將客戶端瀏覽器重定向到另外的URL上,即跳轉到另一個網頁。 示例:Response.Redirect("http://www.baidu.com")
6、End() 終止當前頁的運行 示例:Response.End() 終止當前頁的運行
7、WriteFile() 讀取一個文件,並且寫入客戶端輸出流 示例:Response.End() 終止當前頁的運行,FileName 指代需向瀏覽器輸出的文件的文件名
(實質:打開文件,並且輸出到客戶端。)
二、Request
Request對象主要是讓伺服器取得客戶端瀏覽器的一些數據,包括從HTML表單用Post或者GET方法傳遞的參數、Cookie和用戶認證。因為Request對象是Page對象的成員之一,所以在程式中不需要做任何的聲明即可直接使用;其類名為 HttpRequest
屬性很多,但方法很少,只有一個BinaryRead()
1.使用Request.Form屬性獲取數據
通過該屬性,讀取<Form></Form>之間的表單數據.註意:提交方式要設置為“Post”。
與Get方法相比較,使用Post方法可以將大量數據發送到伺服器端
2.利用Request.QueryString屬性獲取數據
Request對象的QuerySting屬性可以獲取 HTTP 查詢字元串變數集合 。 通過該屬性,我們可以讀取地址信息 http://localhost/aaa.aspx?uid=tom&pwd=abc 其中標識為紅色部分的數據.
註意:提交方式要設置為“Get”
3.問題:Request.Form用於表單提交方式為Post的情況,而Request.QueryString用於表單提交方式為Get的情況,如果用錯,則獲取不到數據。
解決方法:利用Request(“元素名”)來簡化操作。 //應合理選擇避免浪費系統資源
4.Request.ServerVariables("環境變數名稱")
類似的還有:UserHostAddress,Browser,Cookies,ContentType,IsAuthenticated
Item,Params
三、Server
Server對象提供對伺服器上的方法和屬性進行的訪問 .其類名稱是HttpServerUtility.
Server對象的主要屬性有:
MachineName:獲取伺服器的電腦名稱。
ScriptTimeout:獲取和設置請求超時(以秒計)。
方法名稱 說明 :
1、CreateObject 創建 COM 對象的一個伺服器實例。
2、Execute 執行當前伺服器上的另一個aspx頁,執行完該頁後再返回本頁繼續執行
3、HtmlEncode 對要在瀏覽器中顯示的字元串進行HTML編碼並返回已編碼的字元串。
4、HtmlDecode 對HTML編碼的字元串進行解碼,並返回已解碼的字元串。
5、MapPath 返回與 Web 伺服器上的指定虛擬路徑相對應的物理文件路徑。
6、Transfer 終止當前頁的執行,併為當前請求開始執行新頁。
7、UrlEncode 將代表URL的字元串進行編碼,以便通過 URL 從 Web 伺服器到客戶端進行可靠的 HTTP 傳輸。
8、UrlDecode 對已被編碼的URL字元串進行解碼,並返回已解碼的字元串。
9、UrlPathEncode 對 URL 字元串的路徑部分進行 URL 編碼,並返回已編碼的字元串。
編碼:
Server.HtmlEncode(“HTML代碼”)
解碼:
Server.HtmlDecode(“已編碼的HTML”)
Server對象的MapPath方法將虛擬路徑或相對於當前頁的相對路徑轉化為Web 伺服器上的物理文件路徑。
語法:Server.MapPath(“虛擬路徑”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
四、Application
Application對象在實際網路開發中的用途就是記錄整個網路的信息,如上線人數、線上名單、意見調查和網上選舉等。在給定的應用程式的多有用戶之間共用信息,併在伺服器運行期間持久的保存數據。而且Application對象還有控制訪問應用層數據的方法和可用於在應用程式啟動和停止時觸發過程的事件。
1.使用Application對象保存信息
Application(“鍵名”) = 值 或 Application(“鍵名”,值)
獲取Application對象信息
變數名 = Application(“鍵名”) 或:變數名 = Application.Item(“鍵名”) 或:變數名 = Application.Get(“鍵名”)
更新Application對象的值
Application.Set(“鍵名”, 值)
刪除一個鍵
Application.Remove(“鍵名”, 值)
刪除所有鍵
Application.RemoveAll() 或Application.Clear()
2.有可能存在多個用戶同時存取同一個Application對象的情況。這樣就有可能出現多個用戶修改同一個Application命名對象,造成數據不一致的問題。
HttpApplicationState 類提供兩種方法 Lock 和 Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應用程式狀態變數。
關於鎖定與解鎖
鎖定:Application.Lock()
訪問:Application(“鍵名”) = 值
解鎖:Application.Unlock()
註意:Lock方法和UnLock方法應該成對使用。
可用於網站訪問人數,聊天室等設備
3. 使用Application事件
在ASP.NET 應用程式中可以包含一個特殊的可選文件——Global.asax 文件,也稱作 ASP.NET 應用程式文件,它包含用於響應 ASP.NET或HTTP模塊引發的應用程式級別事件的代碼。
Global.asax 文件提供了7個事件,其中5個應用於Application對象
事件名稱 說明
Application_Start 在應用程式啟動時激發
Application_BeginRequest 在每個請求開始時激發
Application_AuthenticateRequest 嘗試對使用者進行身份驗證時激發
Application_Error 在發生錯誤時激發
Application_End 在應用程式結束時激發
五、Session
Session即會話,是指一個用戶在一段時間內對某一個站點的一次訪問。
Session對象在.NET中對應HttpSessionState類,表示“會話狀態”,可以保存與當前用戶會話相關的信息。
Session對象用於存儲從一個用戶開始訪問某個特定的aspx的頁面起,到用戶離開為止,特定的用戶會話所需要的信息。用戶在應用程式的頁面切換時,Session對象的變數不會被清除。
對於一個Web應用程式而言,所有用戶訪問到的Application對象的內容是完全一樣的;而不同用戶會話訪問到的Session對象的內容則各不相同。 Session可以保存變數,該變數只能供一個用戶使用,也就是說,每一個網頁瀏覽者都有自己的Session對象變數,即Session對象具有唯一性。
(1)將新的項添加到會話狀態中
語法格式為: Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值)
(2)按名稱獲取會話狀態中的值
語法格式為: 變數 = Session ("鍵名") 或者 變數 = Session.Item("鍵名")
(3)刪除會話狀態集合中的項
語法格式為: Session.Remove("鍵名")
(4)清除會話狀態中的所有值
語法格式為: Session.RemoveAll() 或者 Session.Clear()
(5)取消當前會話
語法格式為: Session.Abandon()
(6)設置會話狀態的超時期限,以分鐘為單位。
語法格式為: Session.TimeOut = 數值
Global.asax 文件中有2個事件應用於Session對象
事件名稱 說明
Session_Start 在會話啟動時激發
Session_End 在會話結束時激發
六、Cookie
Cookie就是Web伺服器保存在用戶硬碟上的一段文本。Cookie允許一個Web站點在用戶的電腦上保存信息並且隨後再取回它。信息的片斷以‘鍵/值’對的形式存儲。
Cookie是保存在客戶機硬碟上的一個文本文件,可以存儲有關特定客戶端、會話或應用程式的信息,在.NET中對應HttpCookie類。
有兩種類型的Cookie:會話Cookie(Session Cookie)和持久性Cookie。前者是臨時性的,一旦會話狀態結束它將不復存在;後者則具有確定的過期日期,在過期之前Cookie在用戶的電腦上以文本文件的形式存儲。
在伺服器上創建並向客戶端輸出Cookie可以利用Response對象實現。
Response對象支持一個名為Cookies的集合,可以將Cookie對象添加到該集合中,從而向客戶端輸出Cookie。
通過Request對象的Cookies集合來訪問Cookie
編寫Cookie
//方式1:
Response.Cookies["username"].value="mike";
Response.Cookies["username"].Expires=DateTime.MaxValue;
//方式2:
HttpCookie acookie = new HttpCookie("last");
acookie.Value="a";
acookie..Expires=DateTime.MaxValue;
Response.Cookies.Add(acookie);
//多值Cookie的寫法
//方式1:
Response.Cookies["userinfo1"]["name"].value="mike";
Response.Cookies["userinfo1"]["last"].value="a";
Response.Cookies["userinfo1"].Expires=DateTime.MaxValue;
//方式2:
HttpCookie cookie = new HttpCookie("userinfo1");
cookie.Values["name"]="mike";
cookie.Values["last"]="a";
cookie.Expires=DateTime.MaxValue;
//cookie.Expires = System.DateTime.Now.AddDays(1);//設置過期時間 1天
Response.Cookies.Add(cookie)
讀取Cookie
Internet Explorer 將站點的 Cookie 保存在文件名格式為 <user>@<domain>.txt 的文件中,其中 <user> 是您的帳戶名。
註意:在獲取Cookie的值之前,應該確保該 Cookie 確實存在。否則,您將得到一個異常
if(Request.Cookies["userName"] != null)
{
str = Request.Cookies["userName"].Value;
}
//多值Cookie的讀取
If ( Request.Cookies["userInfo1"]!=null )
{
string name=Request.Cookies["userInfo1"]["name"];
string last=Request.Cookies["userInfo1"]["last"];
}
//讀取 Cookie 集合
for(int i = 0 ;i<Request.Cookies.Count ;i++)
{
HttpCookie cookies = Request.Cookies;
Response.Write("name="+cookies.Mame+"<br/>");
if (cookies.HasKeys )//是否有子鍵
{
System.Collections.Specialized.NameValueCollection NameColl
= aCookie.Values ;
for(int j=0;j<NameColl.Count;j++)
{
Response.Write("子鍵名="+ NameColl.AllKey[j] +"<br/>");
Response.Write("子鍵值="+ NameColl[j] +"<br/>");
}
}
else
{
Response.Write("value="+cookies.Value+"<br/>");
}
}
運行此代碼時,可看到一個名為“ASP.NET_SessionId”的Cookie,ASP.NET用這個 Cookie 來保存您的會話的唯一標識符。
修改 Cookie
修改的方法與創建方法相同
刪除 Cookie
將其有效期設置為過去的某個日期。當瀏覽器檢查 Cookie 的有效期時,就會刪除這個已過期的 Cookie。