ASP.NET筆記

動態網頁和B/S技術web

能夠與用戶進行交互 根據不一樣的時間 不一樣的人 有不一樣的實現ajax

CJI ASP PHP ASPX ASP.NET(MVC)json

C/S(部署在局域網或者單機上 客戶端服務器端都要安裝應用程序 每一個端點都要升級) B/S(只須要有瀏覽器 部署在Web服務器上 升級只須要升級服務器)瀏覽器

B/S結構中瀏覽器端與服務器端採用請求/響應模式進行交互(客戶端發送的叫作請求)緩存

服務器端給客戶端相應的響應安全

http協議服務器

請求/響應的處理模式cookie

http通信協議特徵網絡

短鏈接,通信後網絡當即斷開;app

無狀態,對於服務器來講,每個請求都是全新的;

能夠運載多種數據內容,如網頁、圖像、音頻、視頻等;

是一種明文數據傳輸協議,不安全。

(服務器端角度看)

沒有客戶端發請求服務器端毫不可能主動發出響應

服務器和客戶端通信完成之後隨即斷開鏈接,下次通信時沒法區分是哪個客戶端

服務器端基本是隻有一個 客戶端能夠有無限多個,屬於一種一對多的關係

(客戶端角度看)

要接收服務器端的數據 的話 必須客戶端先主動發起請求

要讓服務器端可以分辨也本身 必須主動告訴服務器端

Hhtp通信協議細節

URL統一資源描述符(統一資源定位符)

host(主機)網絡上主機的名稱(能夠用IP地址替換)[:port](端口號)[path](路徑)

get (請求方法)(明文傳輸(有個數限制)) / post 數據打包傳輸 沒有大小個數限制

http狀態碼

響應狀態碼(200 成功)

3開頭表明重定向

4開頭表明請求錯誤

404 沒找到

五、6開頭 服務器錯誤

505 協議版本不支持

MIME類型

每一個MIME類型由兩部分組成,前面是數據的大類別,後面定義具體的種類

服務器端給客戶端改善的數據類型是經過mime類型控制的

ASP.NET 是一種建立動態網站的技術

ASP.NET 是一個事件驅動的、基於控件的體系結構

ASP.NET通過兩次編譯

IIS

ASP.NET引擎 (環境)

第一次有生成頁面類的過程 第二次則沒有 直接實例化頁面類

System.Web.UI.Page 類 (頁面類)

<%@ Page Language=」C#」 AutoEventWireup=」true」 CodeFile=」頁面名.aspx.cs」 Inherits=」類名」 %> (Page指令)

Init(初始化頁面時)

Load(加載頁面時)(Page.IsPostback(判斷是否是首次加載))

PreRender(頁面顯示前)

Unload(頁面卸載時)

ASP.NET中的常見內置對象

Page對象 指向頁面自身的方式,做用域爲頁面執行期

Request對象 讀取客商在Web請求期間發送的值

Response對象 封裝了頁面執行期返回到http客戶端的輸出

Application對象 表明當前應用程序 做用於整個程序運行期的狀態對象

Session對象 會話對象 會話期狀態保持對象,用於跟蹤單一用戶的會話(存儲在服務器端)

Cookie對象 客戶端保持會話信息的一種方式(保存在瀏覽器上的(會話Cookie))

Server對象 提供對服務器上的方法和屬性的訪問

Request.QueryString 能夠獲取經過URL路徑傳來的數據

Request.From 獲取經過表彰提交傳輸的數據

Request.Params 以上方式傳輸的內容均可以使用該屬性獲取

網頁傳的值默認是string類型的

Response.Redirect(重定向到另一個頁面)(兩次請求)

頁面生命週期(配置階段 事件處理階段 顯示階段 清除階段)

Server 對象是HttpServerUtility類的補鈣,包含處理web請求的方法

Execute方法和Transfer方法均會中止當前頁面的執行,並轉去執行用戶在方法內指定的URL,同時用戶的會話狀態和任何當前的事務處理狀態都將傳送給新頁面

區別:

Server.Execute(當前頁面中能夠嵌入其它頁面的內容)(控制權的相對轉移,控制權會再次回到本頁面,執行後續的事件處理)

Server.Transfer(URL參數指定的頁面處理完後,控制權不會返回給調用此方法的頁面,而且在新頁面完成執行時結束,URL地址不變)(是服務器內部的跳轉,是控制權的絕對轉移,在轉移期間能夠傳遞數據,URL地址不變)(是服務器內部 控制權的絕對轉移,對外面來講是透明的,感受不到的,是一次請求,URL地址不變)

Response.Redirect(是客戶gfir重定向,是丟棄了原有的請求數據,從新開啓新的請求,URL地址會變化)

Html表單默認傳輸方式 GET 服務器控件默認傳輸方式 POST

Server.HtmlEncode(會自動轉碼爲Html)

Server.HtmlDecode(自動解碼)

Server.UrlEncode(包含特殊字符 能夠用.進行轉碼)

Server.UrlDecode()

protected 的類能夠在前臺編碼中使用

<%=  %>(表達示 輸出後臺的值)

Server.MapPath

~/表明網點的虛擬根目錄

狀態管理

狀態是任何類型的數據可以在一段時間內保持活躍的信息

這段時期能夠是整個應用程序生命週期,也能夠是用戶使用這個應用程序的時間,或者用戶瀏覽另一個頁面以前這個頁面的生命週期

狀態管理是您對同一頁或不一樣頁的多個請求維護狀態的頁信息的過程

http(hypertext transfer protocol):超文本傳輸協議(應用層協議)(不記錄用戶的信息)

POST GET HEAD OPTIONS DELETE TRACE PUT (請求方式)都是幹嗎的

瀏覽器默認都是GET表單最好是POST

GET 的數據容量不能超過1K    POST數據量不受限制

按照存儲狀態的位置,ASP.NET中狀態保持分類以下

服務器端;Application(全部用戶都能訪問)、 Session(會話期狀態保持對象:關掉瀏覽器會話結束(最大非活動時長 默認:分鐘))

窗戶端:Cookie()、 ViewState、 查詢字符串、 隱藏的窗體字段(隱藏域)

Session

Sessoin.Clear();清空Session

Session.Abandon();終止會話

Cookie

最大爲4KB 保存在客戶端瀏覽器或客戶端硬盤

在客戶端系統中保留客戶端的我的信息

會話Cookie(暫時的 關閉瀏覽器後,任何會話Cookie都會丟失)

持久性Cookie(保存在客戶端硬盤,須要設置Cookie的過時時間)

Cookie缺點:不提供任何安全保障,由客戶端系統控制;容量有限;瀏覽器最多隻能夠容納20個

eg:

HttpCookie cookie = new HttpCookie(「Cookie名稱」, 「值」);

Cookie.Expires(過時時間(設置此屬性後就是持久性Cookie)) = DataTime.Now.AddMonths(1);

Response.Cookies.Add(cookie);

讀取:Requset.Cookies[「cookie(名稱)」].value;(失效獲得的值爲null)

App_Code(建立的類、接口要放在這個文件夾下)

ViewState(視圖狀態)(當前頁面內有效)(使用方式和Session同樣 做用域爲當前頁面)(<% @Page ViewStateEncryptionMode=」Always」%>)

Application表示ASP.NET應用程序的實例

狀態由HttpApplicationState類包括全部及各類關的方法和集合

當第一個用戶請求一個ASP.NET文件時,會應用程序並建立一個Application對象

能夠在整個應用程序中使用,建立的對象將持續到應用程序關閉。它是應用程序級變量,全部頁面均可以使用該對象

Application對象以鍵/值對存儲數據

Global.asax(全局應用程序類)

Application_Start(應用程序啓動) Application_End(應用程序關閉) Application_Error(未處理錯誤) Session_Start(會話開始) Session_End(會話結束)

ASP.NET控件(HTML控件、 Web服務器控件)

Web服務器控件位於System.Web.UI.Webcontrols命名空間下

Literal控件 Repeater

TextBox控件的AutoPostBack屬性 是否自動回傳到服務器 (TextMode)

RequireFieldValidator控件 ControlToValidate屬性(要驗證的控件的ID)(add key=」ValidationSettings:UnobtrusiveValidationMode」 value = 「None」 />)

正則:」+」表示至少出現1次 (表示組) [能夠出現其中的任意一個字符(任選其中一個 )] ?是0到1次 *是0到n次

母版頁:統一風格的做用(不能使用輸出緩存)

緩存:是一項在計算中普遍用來提升性能的技術,它將訪問頻率高或構形成本高的數據保留在內存中、 無需從新建立的狀況下屢次使用

ASP.NET支持兩種緩存:輸出緩存 數據緩存

<%@OutputCache Duration(緩存時間 單位是秒) VaryByParam=」none」(不根據參數緩存) VaryByControl=」控件名」(根據控件名緩存) %>

數據緩存:Cache(緩存類) (存的也是鍵值對)

Shared=」true」

用戶控件(.ascx)(可使用輸出緩存)(<%@Control %>)(定義後臺代碼的關聯)(<%@ Register %>)(註冊用戶控件)

DataBind()實現數據綁定必須的代碼

Ajax Asynchronous JavaScript and XML

$.ajax({

type: 「POST」,

contentType: 「application/json; charset=UTF-8」

});

HttpContext(表明當前請求的一個上下文環境)

IIS處理根據文件的後綴名

ISAPI應用程序(實際上只是一個接口,起到一個代理的做用,主要工做是映射所請求的頁面(文件) 和與此後綴名相應的實際的處理程序)

處理程序映射

HttpRuntime類是asp.net的一個主要入口 ProcessRequest處理請求

應用程序域 AppDomain

HTTP.sys的內置驅動程序來監聽來自外部的HTTP請求

在5.0中 全部應用程序都在進程Aspnet_wp.exe下 死一個都死

iis6 w3wp.exe

HttpModule能夠作一些執行某個實際工做前的事情

HttpHandler也是http請求處理的最底層

HttpModule 實現了System.Web.IhttpModule接口的類(本質上就是過濾器(過濾請求和響應))(有訪問HttpContext對象的權限,能夠修改請求,輸出響應的內容以及提供自定義的身份驗證)(針對每個請求提供響應前處理和響應後處理)(多個HttpModule能夠鉤住相同的事件 事件被處理的順序是它們在web.config裏配置的順序)

 

 

使用HttpModule實現權限管理的步驟:

1 定義一個類Qx, 實現System.Web.IhttpModule接口

2 實現接口中的Init方法,對context.AcquireRequestState事件進行處理,截獲用戶的請求,判斷用戶有沒有訪問特定資源的權限

3 在web.config中添加該HttpModule的配置

Application.CompleteRequest(終止當前請求);

水印

 

全局Handler

 

mechine.config:提供整個機器的默認配置,對該文件的個性將影響全部本機的站點

web.config:通常用於應用程序級別的配置文件,對其修改不影響其餘站點,也能夠用於站點下的子目錄

基於XML區分大小寫

可讀可寫

修改配置 不用重啓服務器

應用配置應用最近的原則

安全控制:身份驗證(登陸頁面)(是否擁有相應的身份); 權限控制(控制各類身份的用戶所擁有的權限)

身份驗證方式

Windows身份驗證

Passport身份驗證

Forms身份驗證

<authentication mode=」Forms」><forms name=」」 loginUrl=」頁面」 timeout=」60」 protection=」All」(加密) ></forms></authentication>

受權:allow(容許) deny(拒絕) *(全部用戶) ?(匿名用戶)

<authorization><deny users=」?」 /><allow roles=」用戶名」 /><deny users=」*」 /></authorization>(系統老是按照從前向後逐條匹配的方式,執行最早的匹配者)

System.Web.Security.FormsAuthentication.RedirectFromLoginPage(用戶名, false)(建立驗證票)

Session.Clear();

Session.Abandon();

System.Web.Security.FormsAuthentication.SignOut();

Response.Redirect(退出後的頁面);

 

 

 

版權聲明:本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

做者:黯淡の青春    博客地址:http://www.cnblogs.com/wuwangqianxun/

相關文章
相關標籤/搜索