
本文是學習2014版ASP.Net視訊教程的學習筆記,僅供本人複習之用:①GET通過URL,POST通過封包體;②需在HTML中為表單元素設定name;③元素id是給Dom用的,name才是送出給伺服器用的;
申明:本文是學習2014版ASP.Net視訊教程的學習筆記,僅供本人複習之用,也沒有釋出到部落格園首頁。
一、一般處理程式基礎
(1)表單送出注意點:
①GET通過URL,POST通過封包體;
②需在HTML中為表單元素設定name;
③元素id是給Dom用的,name才是送出給伺服器用的;
(2)請求處理響應模型:
①浏覽器發出通路請求→②伺服器處理通路請求并傳回HTML→③浏覽器解析HTML并顯示頁面
(3)GET與POST的差別:(★★★→重點)
①GET通過URL傳值,而POST通過HTTP封包;
②GET傳遞的資料量有限,POST則沒有限制;
③POST方式無法通過URL在其他使用者中還原;
④GET方式URL傳特殊字元需要事先進行編碼;
(4)HTTP協定基本了解:
①連接配接(Connection):HTTP不保持連接配接(請求完成就關閉),如果保持連接配接會降低用戶端并發處理請求數,不保持連接配接會降低處理速度(建立連接配接速度很慢);
②請求(Request):包含請求類型、請求的資料以及用戶端資訊等;
③響應(Response):包含具體HTML、響應是否成功以及錯誤碼等;
二、模闆引擎開發基礎
(1)傳統模式的缺點:
①沒有實作界面和邏輯的分離,美工無法介入;
②占位符替換不夠靈活,無法進行複雜的替換;
(2)NVelocity模闆引擎:
①基本用法:編寫模闆→提供資料→渲染生成HTML
②擴充用法:include與parse的差別?
→#include("head.htm")代表模闆嵌套子模闆;#parse("foot.htm")代表模闆嵌套子模闆,子模闆可繼承父模闆中的參數;
③注意之處:
NVelocity解析JQuery代碼$.ajax中的$時把$當做NVelocity中的特殊符号,應對方法是使用jQuery.ajax代替$.ajax;
如果要将DataTable傳遞給NVelocity時僅傳遞DataTable.Rows即可,因為Rows才是一個Collection(集合),可以使用foreach周遊;
為了減少每次NVelocity解析模闆的時間建議啟用NVelocity緩存;
三、狀态的傳遞與保持
(1)經典的URL傳遞:
①優點:簡單直接,明确發給誰,資料不會亂;
②缺點:無法保密,安全性不高
(2)隐藏字段傳遞:
①會加大網站流量;
②會降低通路速度,想想ViewState;
③機密資料無法保證安全性;
(3)Cookie:(★★★★→重點)
①基本概念:儲存在浏覽器端,每次向伺服器送出請求時都會帶上Cookie;伺服器傳回封包除了Html外還有更新後的Cookie;
②生命周期:如果沒有設定Expires過期時間,那麼關閉浏覽器則終止Cookie;如果設定了Expires過期時間,則以過期時間為準作為失效時間;
③缺點限制:存儲資料量有限,機密資訊不能存在Cookie中;無法跨越不同的浏覽器,例如:IE、Chorme、Firefox等;可以被清除,不要将不能丢失的資料存到Cookie;
(4)Session:(★★★★→重點)
①基本概念:伺服器端的“Cookie”,類似于病曆本;
②生命周期:Session具有自動銷毀機制;
③使用注意:HttpHandler要使用Session需實作IRequiresSessionState接口;存放在伺服器記憶體中,不要存放大資料;
④與Cookie的關系:Session在建立時會依賴于Cookie,實質是Cookie存儲一個SessionID作為每次送出伺服器請求通路的Key,Session通過這個Key找到具體的Value值;
(5)Application:
①基本概念:應用全局對象,被全局共享;使用操作之前先加Lock,完成之後UnLock;一般放在Global.asax中的Application_Start事件中;
②使用注意:很多書舉例使用Application統計通路人數會導緻網站在大并發量下會很十分卡;建議做網站開發盡量不用Application,也很少需要有用到它的時候;
PS:很多書中都會這樣使用Application,是不是很眼熟?在使用前加Lock,完成之後UnLock雖然是一個比較好的同步操作,但是也正因為如此,加Lock會造成在大并發量的通路情況下網站系統出現卡頓的現象。![]()
ASP.Net開發基礎溫故知新學習筆記 ![]()
ASP.Net開發基礎溫故知新學習筆記 View Code1 void Application_Start(object sender, EventArgs e) 2 { 3 // 在應用程式啟動時運作的代碼 4 Application["count"] = 0;//初始設定計數從0開始 5 } 6 7 void Session_Start(object sender, EventArgs e) 8 { 9 // 在新會話啟動時運作的代碼 10 Application.Lock();//同步,避免同時寫入 11 Application["count"]=(int)Application["count"]+1;//每建立一個會話該全局變量加1 12 Application.UnLock();//同步結束 13 }
四、AJAX基礎
(1)AJAX産生原因:
①傳統全局重新整理導緻使用者體驗不好; ②IE5中首次引入了XMLHttpRequest;
(2)AJAX基本概念:
①AJAX全稱:AsynchronousJavascriptAndXML=異步的JavaScript和XML,一種進行頁面局部重新整理的技術;
②AJAX通過在背景與伺服器進行少量資料交換,AJAX可以使網頁實作異步更新,進而改善使用者體驗效果;
(3)AJAX基本流程:
①浏覽器HTML中使用JavaScript建立XMLHttpRequest → ②伺服器端擷取請求進行處理并傳回符合AJAX風格的資料(例如Json) → ③浏覽器JavaScript解析伺服器傳回的資料并局部顯示或更改資訊
(4)AJAX核心對象:JavaScript對象XMLHttpRequest
XmlHttpRequest使我們可以使用JavaScript向伺服器提出請求并處理響應,而不阻塞使用者。
PS:下面是一段經典的純手工使用js對象XMLHttpRequest的執行個體:![]()
ASP.Net開發基礎溫故知新學習筆記 ![]()
ASP.Net開發基礎溫故知新學習筆記 function ajax(url, onsuccess) { var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //建立XMLHTTP對象,考慮相容性。XHR xmlhttp.open("POST", url, true); //“準備”向伺服器的GetDate1.ashx發出Post請求(GET可能會有緩存問題)。這裡還沒有送出請求 //AJAX是異步的,并不是等到伺服器端傳回才繼續執行 xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) //readyState == 4 表示伺服器傳回完成資料了。之前可能會經曆2(請求已發送,正在進行中)、3(響應中已有部分資料可用了,但是伺服器還沒有完成響應的生成) { if (xmlhttp.status == 200) //如果Http狀态碼為200則是成功 { onsuccess(xmlhttp.responseText); } else { alert("AJAX伺服器傳回錯誤!"); } } } //不要以為if (xmlhttp.readyState == 4) {在send之前執行!!!! xmlhttp.send(); //這時才開始發送請求。并不等于伺服器端傳回。請求發出去了,我不等!去監聽onreadystatechange吧! }
(5)AJAX優點缺點:
①優點:頁面無重新整理,在頁面内與伺服器通信,給使用者的體驗非常好;“按需取資料”,可以最大程度的減少備援請求和響應對伺服器造成的負擔;基于XML标準化,并被浏覽器廣泛支援,不需安裝插件等;
②缺點:由于AJAX隻是局部重新整理,是以頁面的後退按鈕是沒有用的(破壞了後退按鈕機制);對流媒體還有移動裝置的支援不是太好;
五、用戶端不可信
(1)用戶端驗證不能代替服務端驗證:
①用戶端校驗是為了更好的用戶端體驗,服務端校驗是最後一次把關,防止惡意請求;
②請求封包資料可以修改,例如Http封包中的UserAgent、Referer、Cookie等都是可以造假的;
③JQuery Validator+服務端校驗是不錯的開發方式;
(2)ValidateRequest:
①ASP.Net預設對請求資料進行了校驗->防止XSS攻擊(跨站腳本攻擊)
②對于要送出含HTML的文本内容需要關閉校驗,在web.config中設定requestValidationMode="2.0"
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
利用關閉校驗的漏洞可以進行:送獎品的消息框、收集賬号和密碼;
(3)CKEditor:經典的Web線上編輯器
①除了_samples、_source、*.php、*.asp都放到js/ckeditor檔案夾下;
②頁面中引用ckeditor.js;
③頁面編輯器的位置使用textarea,在頁面onload中或textarea之後使用CKEDITOR.replace(textarea);
總結思維導圖
作者:周旭龍
出處:http://www.cnblogs.com/edisonchou/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。