ASP.NET(get和post比較)

來源:互聯網
上載者:User
ASP.NET(get和post比較)

首先我們回顧一下,之前學過的Http協議.

這裡邊有個串連,瀏覽器要請求伺服器建立一個串連,串連之後,發送請求,伺服器做出響應.響應結束之後,要關閉串連,當HTTP1.0的時候是短串連,HTTP1.1的時候是長串連。長串連的意思是等個非常短的時間,還有請求的話,串連就不關閉,否則的話就關閉。

因為這個串連,響應結束之後不管是長串連還是短串連,最終都要關閉。串連一關閉,伺服器就不知道這個瀏覽器的存在,就是因為這個特點,Http是無狀態的。無狀態會給我們造成很多的麻煩,什麼是無狀態,就是伺服器不會記得瀏覽器曾經請求過我。所以,同一個頁面中請求了外部的js、css、jpg每次在請求這些檔案的時候都需要重複提交一些資料。

如果網頁中引用了多個外部檔案,每一個檔案都要發送一個請求。還有就是伺服器跟瀏覽器的關係是:要求-回應。

伺服器會不會主動的給瀏覽器發送響應?

不會的,因為伺服器根本就不知道有哪些瀏覽器的存在。比如新浪微博,好像是伺服器主動給瀏覽器發送響應的。

這個是怎麼實現的呢?

伺服器不會主動向瀏覽器發送響應,瀏覽器有個定時器不停的向伺服器發送請求,擷取伺服器的響應。需要使用ServerPush(ajax隔一段時間到伺服器請求最新的資料)等額外的技術。

迅雷裡面的斷點續傳是怎麼實現的呢?

當下載的時候,它會記錄下來記錄了多少個位元組。並且把那些位元組都放在臨時檔案裡面。再次下載的時候從上次記錄的位元組的位置之後開始下載,並且存放到臨時檔案裡面。直到整個檔案被下載完畢。再還原這個檔案。

今天我們要學一般處理常式,html控制項與.NET內部對象。

1、目標:從網路的角度介紹 ASP.NET 的運行機制原理,並對 ASP.NET 中的幾個核心對象進行分析.

2、檢驗結果:熟練使用一般處理常式完成單表增刪改查

下面我們回顧下之前學過的內容,什麼是瀏覽器語言?

在瀏覽器端執行的語言叫瀏覽器語言。

伺服器語言就是在伺服器上執行的語言。

靜態頁面和動態網頁面的區別是什麼呢?

動態網頁面需要運行伺服器端的語言,靜態頁面是純展示的。靜態頁面伺服器直接讀檔案,讀完之後直接發送。在伺服器上不會執行特別複雜的事情。

如果是動態網頁面的話,在伺服器要建立這個類的對象,並且調相應的代碼執行。

之前,我們自己寫了個web伺服器,真正應用的時候不會自己去寫伺服器。我們開發完網站之後,會把網站部署在iis上。

接下來我們看下iis web伺服器工作的流程。

iis跟我們自己寫的伺服器的工作原理是類似的。

我們先看下iis:

                       

一、看下iis這個軟體

xp裡面的iis是5.1,win7裡面的是6.0,介面稍微有些不一樣。

 

二、iss運行網站

我們在裡面可以建個虛擬目錄,去發布一些網站。

示範下win7中怎麼安裝iis吧。

一、首先是安裝IIS。開啟控制台,找到“程式與功能”,點進去

 

三、程式與功能

二、點擊左側“開啟或關閉Windows功能”

 

四、開啟或關閉Windows功能

三、找到“Internet 資訊服務”,按照打勾即可

 

五、找到“Internet 資訊服務”

等待安裝完成

 

六、等待安裝完成

四、安裝完成後,再回到控制台裡面,找到“管理工具”,點進入

 

七、管理工具

五、雙擊“Internet 資訊服務(IIS)管理器”就是IIS了。如果經常需要使用IIS的朋友,建議滑鼠指到“Internet 資訊服務(IIS)管理器”上,右鍵--發送到--案頭捷徑,這樣就能從案頭進入IIS,而不用每次都點控制台。

 

八、IIS介面

IIS介面:

五、選中“Default Web Site”,雙擊中間的“ASP”

 

九、雙擊ASP

把“啟用父路徑”改為“True”

 

十、把啟用父路徑改為True

七、下面就是配置網站了。單擊右側“進階設定”

 

十一、“進階設定”

選擇你網站的目錄

 

十二、選擇網站目錄

八、回到IIS,單擊右側的“綁定...”,選中你要綁定的網站,點“編輯”

 

十三、選中網站-編輯

如果是一台電腦,只修改後面的連接埠號碼就行,可以隨意修改數字。如果是辦公室區域網路,點擊下拉框,選擇自己電腦上的區域網路IP,例如:192.168.**.**,然後修改連接埠號碼

 

十四、修改連接埠號碼

九、回到IIS,如果右側顯示停止,就選擇啟動,然後點擊下面的瀏覽網站,就可以開啟你繫結檔案夾裡面的網站了

 

十五、瀏覽網站

十、如果有多個網站,在IIS左邊“網站”右鍵“添加網站”

 

十六、添加網站

主要修改三個地方,“網站名稱”、“實體路徑”、“連接埠”,如果區域網路,請修改“IP地址”,同上

 

十七、修改內容

十一、添加好後,點擊建立的網站名字,就是這個網站的詳情了。

下面我們回來看看iis是怎麼工作的,

                    

十八、點擊配置

 

十九、aspnet_isapi.dll

其中的asp和aspx是不一樣的。asp交給asp.dll了。

 

二十、asp交給另一個人去處理了

請求靜態頁面:

內部先去處理請求報文,請求報文處理請求的路徑,然後再讀檔案。讀到iis裡面來,iis再為響應產生回應標頭,把檔案發送給瀏覽器。

 

請求動態網頁面:

瀏覽器發送一個請求,通過尾碼名來判斷是靜態還是動態?如果尾碼名是aspx,這個時候iis處理不了。但是,找個人去處理,這個關係在哪兒配置的呢?

 

當請求過來以後,不管是靜態頁面還是動態網頁面,都去映射表裡面找。只是找的找還是找不找的問題。如果是靜態頁面也會去映射表裡面找,一看沒找著,iis就自己處理了。讀檔案然後返還。如果找著了,一看尾碼名是aspx並且在映射表裡面找到了,請求交給aspnet_isapi.dll這個程式是FrameWork的。在安裝完.net FrameWork之後才有這個檔案。

那麼,iis依賴.net FrameWork呢?iis直接運行在作業系統上,iis不依賴.net FrameWork,跟.net FrameWork之間沒有關係。C#代碼在.net FrameWork上執行。iis把請求轉交給.net FrameWork,讓.net FrameWork來執行頁面的C#代碼。isapi就是它們之間的關係。怎麼去執行請求的類的對象,通過反射去建立這個類的對象。那個方法執行完之後就一層一層的返。最終,返回給瀏覽器。

當我剛裝了作業系統,又配置了iis,能執行asp.net寫的網站嗎?不能,沒有.net FrameWork

如果我裝了作業系統,又裝了.net FrameWork,又裝了iis,在iis上發布了一個asp.net的網站。能運行嗎?不能,這個時候iis不知道.net FrameWork的存在。沒有配置。需要配置一下,有個命令:運行敲:cmd。

aspnet_regiis-i在iis裡面註冊.net FrameWork,產生我們看見的那些東西。不能在這運行。因為,這個命令是.net FrameWork安裝目錄裡面的命令。

開啟VS2010的命令提示。

 

二十一、不能在這執行

 

二十二、開啟VS2010的命令提示

 

二十三、在這裡執行下

 

二十四、iis運行過程圖

 

二十五、工作流程圖

請求過來之後,如果尾碼名是aspx,如果是iis5.1就是windowsXP裡面裝的iis,這個時候請求直接交給iis。沒有這個過程。現在這張圖是iis6.0以後執行的過程。windows sever2003安裝的就是6.0,6.0以後的iss都是這麼來請求的。請求過來之後,這個請求沒有到iis,第一步不經過iis。先經過http.sys,一個系統層級的驅動程式。作業系統核心程式。先接收到這次請求,對請求報文進行過濾看請求報文是不是合法?如果請求合法的話,這個驅動程式才把請求交給iis,iis再找iis的擴充程式,有aspnet_Isapl.dll和aspnet_filter.dll。這兩個擴充程式做的事情不一樣。

如果是靜態頁面直接處理,如果是aspx交給中間,如果是asp交給右面。

下面我們再說下什麼是ASP.Net

ASP.Net是不是一種語言?不是,是一種動態網頁技術,跟ASP一樣。

ASP.NET和ASP有什麼區別呢?

他們內部的一些對象還是一樣的,因為這兩個技術都是微軟的,都是開發動態網頁的技術。ASP開發動態網頁的時候使用的伺服器端的指令碼語言。指令碼語言都是解釋執行的。C#和java都是編譯執行的。ASP.NET依託於. net FrameWork架構。

 

我們在學習ASP.Net的時候需要學習這三部分內容。ASP.Net:一般處理常式(ashx),WebForm(aspx)、MVC(Model, View , Controler)。

 

看下今天的重點:

 

二十六、ASP.Net熱門檔案

現在我們只需要記住前三個就ok了。

下面我們寫個一般處理常式,建立一個網站:

 

二十七、建立網站

 

二十八、建立空網站

如果我把VS關了,關了之後怎麼開啟網站?把網站發給了別人,別人怎麼開啟呢?檔案-開啟-網站。簡單的辦法:

 

二十九、另存新檔解決方案

用的時候直接找到儲存的檔案夾,雙擊解決方案就可以開啟這個網站。

下面我們來建個一般處理常式:

 

三十、添加新項

 

三十一、建立一般處理常式

ashx就是一個類,為什麼它不叫類了,變成一般處理常式了呢?就因為它實現了IHttpHandler這個介面。

 

三十二、一般處理常式

 

三十三、轉到定義

ProcessRequest的作用是處理請求,並做出響應。

IHttpHandler介面的作用是保證所有能夠處理瀏覽器請求的類具有這個方法。這是這個介面的作用。

 

三十四、HttpContext

 

三十五、執行伺服器端代碼

 

三十六、Content-Type

要是輸出html代碼的話,改成text/html

httpwatch_pro_6.1.46:

HttpWatch_Pro_7.1.37 :

練習:

輸出一段包含圖片的html頁面代碼試試。

                    

三十七、輸出包含圖片的html頁面代碼

 

三十八、發送了兩次請求

 

三十九、返回了html代碼

 

四十、再次發送請求,請求一張圖片

 

四十一、伺服器幫我們做的事情

下面我們把這段代碼再改一下。

 

四十二、純文字,怎麼運行?

 

四十三、純文字顯示的就是純文字

 

一般處理常式(HttpHandler):是一個實現System.Web.IHttpHandler介面的特殊類。
任何一個實現了IHttpHandler介面的類,是作為一個外部請求的目標程式的前提。(凡是沒有實現此介面的類,就不能被瀏覽器請求。)

它由支援ASP.NET的伺服器調用和啟動運行。一個HttpHandler程式負責處理它所對應的一個或一組URL地址的訪問請求,並接收用戶端發出的訪問請求資訊(請求報文)和產生響應內容(響應報文)。

簡單的說:咱可以通過建立一個我們自己的HttpHandler程式來產生瀏覽器代碼發送回用戶端瀏覽器。

HttpHandler程式可以完成普通類程式所能完成的大多數任務:
1.擷取用戶端通過HTML的Form表單提交的資料和URL參數
2.建立對用戶端的響應訊息內容
3.訪問伺服器端的檔案系統
4.串連資料庫並開發基於資料庫的應用
5.調用其他類

 

四十四、web伺服器

 

四十五、一般處理常式

 

四十六、伺服器怎麼接收發送資料

 

四十七、今天需要掌握的內容

下面我們看下瀏覽器提交資料的兩種方式,以百度為例:

 

四十八、百度搜尋的時候是以url傳參

 

四十九、通過表單提交資料

url以這種方式傳參: http://127.0.0.1/login.ashx?txtname1=jordan&txtpwd1=123

下面我們自己寫下get請求,

 

五十、接收資料

還有個頁面類比百度搜尋的文字框,建立個文字框。

                     

五十一、寫個html頁面,類比百度用url傳參

 

五十二、在一般處理常式裡面接收url

 

五十三、執行過程

                     

五十四、執行請求多個值

 

五十五、擷取文字框的值以及傳值

 

五十六、監視執行的過程

 

五十七、看看這樣寫能不能被提交

運行以後發現沒有東西,所以根本就沒提交給伺服器。

 

五十八、改成這個樣子

 

五十九、這種情況下還是通過get進行提交

下面我們再來看怎麼通過post的方式傳遞資料.

                       

六十、表單提交的頁面

 

六十一、給兩個文字框起個名字

 

六十二、在伺服器上擷取資料

 

六十三、執行結果示範

下面我們再來看下get請求和post請求報文中的區別。

post比get請求報文中多的內容

Content-Type: application/x-www-form-urlencoded 就是告訴伺服器傳輸給你的資料格式跟url是一樣的。而且在進行post提交的時候,必須具有content-type,沒有的話,post提交就失敗。

Cache-Control: no-cache 就是告訴伺服器,瀏覽器不去緩衝你的頁面。

請求體name=123&pwd=abc

 

六十四、注意下這個設定

下面我們看下Request常用成員

 

六十五、request

下面我們看下Params能擷取什嗎?

 

六十六、遍曆輸出看看裡面都有什麼

 

六十七、Params能擷取什麼

context.Request[“”]這麼寫也行,但是不推薦使用。//相當於context.Request.Params

下面我們再來看下Response。

 

六十八、Response

 

六十九、Redirect

hello world輸出沒有?監視下請求。

 

七十、監視下請求

 

七十一、Redirect執行過程圖

 

七十二、就不再往下執行了。

下面我們看下post的時候,需要注意的問題。

 

七十三、這種情況下不能post

頁面上不可以有多個表單。可以,而且不會衝突。

因為每個表單都有一個action。

想要提交誰必須有name屬性。

按鈕能不能提交給伺服器?加name就提交給伺服器了。

只有value才能提交給伺服器。

div不能提交給伺服器。

只有表單元素才能提交給伺服器。

當元素被禁用的時候也不會提交給伺服器。

 

七十四、提交性別

 

七十五、選中誰提交誰

 

七十六、表單提交多選

 

七十七、監視提交多個

用伺服器接收一下。

 

七十八、用伺服器接收一下

 

七十九、擷取到的值

如果我有多個文字框,文字框的name都一樣,這個時候又怎麼辦?

下面我們示範下有多個文字框的時候的情況:

 

八十、監視有多個文字框的時候

下回我們將類比登陸,請大家關注!!!

回到起始位置

 

作者近期文章列表:

C#中級進階教程(完全免費,獻給代碼愛好者的最好禮物。註:本作者分享自己精心整理的C#中級進階教程,無任何商業目的。希望與更多的代碼愛好者交流心得,也請高手多多指點!!!)
ASP.net項目 圖書商城項目總論
三層及其它內容 遞迴
三層(一)
三層相關案例(及常見的錯誤)
三層執行個體(內涵Sql CRUD)
手寫代碼產生器
SQL資料庫 ADO.net 資料庫的應用圖解一
資料庫的應用詳解二
ADO.NET(內涵效率問題)
ADO.NET執行個體教學一
ADO.NET執行個體教學二
資料庫的應用詳解三
ADO.NET(內含預存程序講解)
面向過程,物件導向中進階 面向過程,物件導向的深入理解一
面向過程,物件導向的深入理解二
物件導向的深入理解三
Regex
無處不在的XML
winform基礎 Winform基礎
winform中常用的控制項
面向過程 三種迴圈的比較
C#中的方法(上)
我們常見的數組
物件導向 思想的轉變
C#中超級好用的類
C#中解構函式和命名空間的妙用
C#中超級好用的字串
C#中如何快速處理字串
實值型別和參考型別及其它
ArrayList和HashTable妙用一
ArrayList和HashTable妙用二
檔案管理File類
多態
C#中其它一些問題的小節
GDI+ 這些年我收集的GDI+代碼
這些年我收集的GDI+代碼2
HTML概述以及CSS 你不能忽視的HTML語言
你不能忽視的HTML語言2精編篇
你不能忽視的HTML語言3
html-綜合篇
CSS基本相關內容--中秋特別奉獻
CSS基本相關內容2
JavaScript基礎 JavaScript基礎一
javascript基礎二JavaScript DOM編程
jQuery jQuery(內涵: jquery選取器)
jquery執行個體教學一

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.