ASP.Net開發基礎溫故知新學習筆記


申明:本文是學習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會造成在大並發量的訪問情況下網站系統出現卡頓的現象。

 1     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     }
View Code

四、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的實例:

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吧!
}
View Code

  (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>
View Code

    利用關閉校驗的漏洞可以進行:送獎品的消息框、收集賬號和密碼;

  (3)CKEditor:經典的Web在線編輯器

ckeditor

    ①除了_samples、_source、*.php、*.asp都放到js/ckeditor文件夾下;

     ②頁面中引用ckeditor.js;

     ③頁面編輯器的位置使用textarea,在頁面onload中或textarea之后使用CKEDITOR.replace(textarea);

總結思維導圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM