濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述

ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述

熱門標(biāo)簽:玉林市機(jī)器人外呼系統(tǒng)哪家好 申請(qǐng)400電話手續(xù) 電話機(jī)器人軟件銷售工作 蘋果手機(jī)凱立德地圖標(biāo)注 合肥電銷外呼系統(tǒng)哪家公司做的好 百度ai地圖標(biāo)注 同安公安400電話怎么申請(qǐng)流程 預(yù)測(cè)式外呼系統(tǒng)使用說明 南陽外呼系統(tǒng)定制化

一、前言

1、了解HTTP(hypertext transport protocol)超文本傳輸協(xié)議

它是一種分布式,協(xié)作式,超媒體系統(tǒng)應(yīng)用之間的通信協(xié)議。是萬維網(wǎng)(world wide web)交換信息的基礎(chǔ)。它以HTML文檔從web服務(wù)器傳到web瀏覽器的方式進(jìn)行的,如下圖解:

HTTP工作在TCP/IP協(xié)議體系中的TCP協(xié)議上。我們可以引出TCP/IP協(xié)議層級(jí)模型,如下圖:

HTTP請(qǐng)求的方法如下
(1).OPTIONS:返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法。也可以利用向Web服務(wù)器發(fā)送'*'的請(qǐng)求來測(cè)試服務(wù)器的功能性?!?BR>(2).HEAD:向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過響應(yīng)體將不會(huì)被返回。這一方法可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。
(3).GET:向特定的資源發(fā)出請(qǐng)求。注意:GET方法不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中,例如在web app.中。其中一個(gè)原因是GET可能會(huì)被網(wǎng)絡(luò)蜘蛛等隨意訪問?!?BR>(4).POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改?!?BR>(5).PUT:向指定資源位置上傳其最新內(nèi)容。
(6).DELETE: 請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源?!?BR>(7).TRACK: 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。

2.表單提交原理

這里引述了大牛們的總結(jié)

(1).表單提交時(shí)表單內(nèi)容會(huì)被瀏覽器封裝為HTTP請(qǐng)求報(bào),里面包含了所有表單元素的name屬性值和value屬性的值,形式為name=value。

(2).該HTTP請(qǐng)求報(bào)被webserver獲取后會(huì)被解析并封裝成一個(gè)Request對(duì)象,Request對(duì)象里有一個(gè)Parameters集合專門用來存放所有的表單元素名值對(duì)。

(3).每個(gè)表單元素名值對(duì)被封裝成一個(gè)Parameter,而Parameter其實(shí)就是一個(gè)Map,所以你的Servlet里就可以用request.getParameter(name)獲取其value了。

 既然大牛們都說的很清楚了,那么我們還需要清除的是表單靠什么進(jìn)行提交的,在這里表單標(biāo)簽有個(gè)很重要的屬性就是enctype,它設(shè)置以何種編碼方式提交表單數(shù)據(jù)。有以下三種:

(1).application/x-www-form-urlencoded:這是默認(rèn)的編碼方式,通過Value值的方式進(jìn)行數(shù)據(jù)處理 [這個(gè)我還是模糊的]
(2).multipart/form-data:是以二進(jìn)制流的方式來處理表單數(shù)據(jù)
(3).text/plain:當(dāng)表單的action屬性值為mailto:URL的形式時(shí)使用,多用于直接通過表單發(fā)送郵件

二、HtmlForm控件

1.HtmlForm 控件用于控制 form> 元素,主要屬性如下

屬性 描述
Action

URL,定義當(dāng)提交表單時(shí)把數(shù)據(jù)送往何處。注釋:該屬性總是設(shè)置為頁面自身的 URL!

Attributes 返回該元素的所有屬性名稱和值對(duì)。
Disabled 布爾值,指示是否禁用該控件。默認(rèn)是 false。
EncType 用來編碼表單內(nèi)容的 MIME 類型。
id 控件的唯一 id。
InnerHtml

設(shè)置或返回該 HTML 元素的開始標(biāo)簽和結(jié)束標(biāo)簽之間的內(nèi)容。特殊字符不會(huì)被自動(dòng)轉(zhuǎn)換為 HTML 實(shí)體。

InnerText

設(shè)置或返回該 HTML 元素的開始標(biāo)簽和結(jié)束標(biāo)簽之間的所有文本。特殊字符會(huì)被自動(dòng)轉(zhuǎn)換為 HTML 實(shí)體。

Method 表單向服務(wù)器傳送數(shù)據(jù)的方式。合法的值是 "post" 和 "get"。默認(rèn)是 "post"。
Name 表單的名稱。
runat 規(guī)定該控件是一個(gè)服務(wù)器控件。必須被設(shè)置為 "server"。
Style 設(shè)置或返回被應(yīng)用到控件的 CSS 屬性。
TagName 返回元素的標(biāo)簽名。
Target 加載 URL 的目標(biāo)窗口。
Visible 布爾值,指示該控件是否可見。

Method:Post / Get;其中的差別是Get表示由瀏覽器主動(dòng)上傳資料至Server 端,是立即傳送,其執(zhí)行效率快但是傳送的數(shù)據(jù)量也不能太大;而Post表示由服務(wù)器來抓取數(shù)據(jù),雖然不是那么立即,但是可傳送的數(shù)據(jù)量則沒有什么限制。

Action:要提交數(shù)據(jù)的頁面,即數(shù)據(jù)要傳送至哪個(gè)網(wǎng)址。

2.Post與Get的區(qū)別: 

http://jb51.net/web/72554.html
Form提供了兩種數(shù)據(jù)傳輸?shù)姆绞健猤et和post。雖然它們都是數(shù)據(jù)的提交方式,但是在實(shí)際傳輸時(shí)確有很大的不同,并且可能會(huì)對(duì)數(shù)據(jù)產(chǎn)生嚴(yán)重的影響。雖然為了方便的得到變量值,Web容器已經(jīng)屏蔽了二者的一些差異,但是了解二者的差異在以后的編程也會(huì)很有幫助的。

Form中的get和post方法,在數(shù)據(jù)傳輸過程中分別對(duì)應(yīng)了HTTP協(xié)議中的GET和POST方法。二者主要區(qū)別如下:

1、Get是用來從服務(wù)器上獲得數(shù)據(jù),而Post是用來向服務(wù)器上傳遞數(shù)據(jù)。

2、Get將表單中數(shù)據(jù)的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?”連接,而各個(gè)變量之間使用“”連接;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對(duì)應(yīng)的方式,傳遞到action所指向URL。

3、Get是不安全的,因?yàn)樵趥鬏斶^程,數(shù)據(jù)被放在請(qǐng)求的URL中,而如今現(xiàn)有的很多服務(wù)器、代理服務(wù)器或者用戶代理都會(huì)將請(qǐng)求URL記錄到日志文件中,然后放在某個(gè)地方,這樣就可能會(huì)有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數(shù)據(jù),一些系統(tǒng)內(nèi)部消息將會(huì)一同顯示在用戶面前。Post的所有操作對(duì)用戶來說都是不可見的。

4、Get傳輸?shù)臄?shù)據(jù)量小,這主要是因?yàn)槭躑RL長(zhǎng)度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用Post(當(dāng)然還有一個(gè)原因,將在后面的提到)。

5、Get限制Form表單的數(shù)據(jù)集的值必須為ASCII字符;而Post支持整個(gè)ISO10646字符集。

6、Get是Form的默認(rèn)方法。

使用Post傳輸?shù)臄?shù)據(jù),可以通過設(shè)置編碼的方式正確轉(zhuǎn)化中文;而Get傳輸?shù)臄?shù)據(jù)卻沒有變化。在以后的程序中,我們一定要注意這一點(diǎn)。

1、Get 方法通過 URL 請(qǐng)求來傳遞用戶的數(shù)據(jù),將表單內(nèi)各字段名稱與其內(nèi)容,以成對(duì)的字符串連接,置于 action 屬性所指程序的 url 后,如http://www.mdm.com/test.asp?name=asdpassword=sad,數(shù)據(jù)都會(huì)直接顯示在 url 上,就像用戶點(diǎn)擊一個(gè)鏈接一樣;Post 方法通過 HTTP post 機(jī)制,將表單內(nèi)各字段名稱與其內(nèi)容放置在 HTML 表頭(header)內(nèi)一起傳送給服務(wù)器端交由 action 屬性能所指的程序處理,該程序會(huì)通過標(biāo)準(zhǔn)輸入(stdin)方式,將表單的數(shù)據(jù)讀出并加以處理

2、 Get 方式需要使用 Request.QueryString 來取得變量的值;而 Post 方式通過 Request.Form 來訪問提交的內(nèi)容

3、Get 方式傳輸?shù)臄?shù)據(jù)量非常小,一般限制在 2 KB 左右,但是執(zhí)行效率卻比 Post 方法好;而 Post 方式傳遞的數(shù)據(jù)量相對(duì)較大,它是等待服務(wù)器來讀取數(shù)據(jù),不過也有字節(jié)限制,這是為了避免對(duì)服務(wù)器用大量數(shù)據(jù)進(jìn)行惡意攻擊,根據(jù)微軟方面的說法,微軟對(duì)用 Request.Form() 可接收的最大數(shù)據(jù)有限制,IIS 4 中為 80 KB 字節(jié),IIS 5 中為 100 KB 字節(jié)建議:除非你肯定你提交的數(shù)據(jù)可以一次性提交,否則請(qǐng)盡量用 Post 方法

4、Get 方式提交數(shù)據(jù),會(huì)帶來安全問題,比如一個(gè)登陸頁面,通過 Get 方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在 URL 上,如果頁面可以被緩存或者其他人可以訪問客戶這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的帳號(hào)和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果刷新的時(shí)候,會(huì)彈出一個(gè)對(duì)話框建議:出于安全性考慮,建議最好使用 Post 提交數(shù)據(jù)

 關(guān)于ASP.NET的HtmlForm 控件這點(diǎn)弄明白之后,那么在后期的ASP.NET上傳控件、Request獲取窗體變量就能很容易的去理解了。再者,關(guān)于Get與Post的區(qū)別,甚是關(guān)鍵,去年面試的時(shí)候就因?yàn)檫@點(diǎn)沒有很好地回答上而被潛回,看來以后還是要把基礎(chǔ)的東西弄熟透、打扎實(shí)才能為后面的道路順利開展工作。

您可能感興趣的文章:
  • Asp.net XMLHTTP封裝類(GET,Post發(fā)送和接收數(shù)據(jù))
  • ASP.NET Get和Post兩種提交方法淺析
  • asp.net頁面與頁面之間傳參數(shù)值方法(post傳值和get傳值)
  • 區(qū)分ASP.NET中g(shù)et方法和post方法

標(biāo)簽:嘉興 淄博 揚(yáng)州 南昌 臺(tái)州 海南 南京 南京

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述》,本文關(guān)鍵詞  ASP.NET,的,HtmlForm,控件,學(xué)習(xí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET的HtmlForm控件學(xué)習(xí)及Post與Get的區(qū)別概述的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    横山县| 安塞县| 武强县| 许昌市| 乐山市| 肃南| 平顺县| 平山县| 长治市| 珲春市| 武定县| 商水县| 连江县| 平乡县| 根河市| 江达县| 太康县| 开鲁县| 嘉定区| 霍城县| 渝中区| 大埔区| 尚志市| 通榆县| 措美县| 汾阳市| 顺平县| 铁岭县| 海伦市| 镇康县| 宣恩县| 永兴县| 商城县| 乐都县| 忻城县| 凌海市| 肇州县| 罗山县| 凤山县| 互助| 吴江市|