最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年02月02日 13:38:10   作者:  
HtmlForm 控件用于控制form元素,本文主要介紹下HtmlForm控件的Method/Action方法(要提交數(shù)據(jù)的頁(yè)面,即數(shù)據(jù)要傳送至哪個(gè)網(wǎng)址)及Post與Get的區(qū)別感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)HtmlForm控件有所幫助

一、前言

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

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

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

BeginMan--TCP/IP協(xié)議

HTTP請(qǐng)求的方法如下
(1).OPTIONS:返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法。也可以利用向Web服務(wù)器發(fā)送'*'的請(qǐng)求來(lái)測(cè)試服務(wù)器的功能性。 
(2).HEAD:向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過(guò)響應(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ò)蜘蛛等隨意訪問(wèn)?!?BR>(4).POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。 
(5).PUT:向指定資源位置上傳其最新內(nèi)容。
(6).DELETE: 請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。 
(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集合專門(mén)用來(lái)存放所有的表單元素名值對(duì)。

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

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

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

二、HtmlForm控件

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

屬性 描述
Action

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

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

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

InnerText

設(shè)置或返回該 HTML 元素的開(kāi)始標(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 布爾值,指示該控件是否可見(jiàn)。

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

Action:要提交數(shù)據(jù)的頁(yè)面,即數(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ù)傳輸過(guò)程中分別對(duì)應(yīng)了HTTP協(xié)議中的GET和POST方法。二者主要區(qū)別如下:

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

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ù),可以通過(guò)設(shè)置編碼的方式正確轉(zhuǎn)化中文;而Get傳輸?shù)臄?shù)據(jù)卻沒(méi)有變化。在以后的程序中,我們一定要注意這一點(diǎn)。

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

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

3、Get 方式傳輸?shù)臄?shù)據(jù)量非常小,一般限制在 2 KB 左右,但是執(zhí)行效率卻比 Post 方法好;而 Post 方式傳遞的數(shù)據(jù)量相對(duì)較大,它是等待服務(wù)器來(lái)讀取數(shù)據(jù),不過(guò)也有字節(jié)限制,這是為了避免對(duì)服務(wù)器用大量數(shù)據(jù)進(jìn)行惡意攻擊,根據(jù)微軟方面的說(shuō)法,微軟對(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ì)帶來(lái)安全問(wèn)題,比如一個(gè)登陸頁(yè)面,通過(guò) Get 方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在 URL 上,如果頁(yè)面可以被緩存或者其他人可以訪問(wèn)客戶這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的帳號(hào)和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁(yè)面常見(jiàn)的問(wèn)題是,該頁(yè)面如果刷新的時(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)沒(méi)有很好地回答上而被潛回,看來(lái)以后還是要把基礎(chǔ)的東西弄熟透、打扎實(shí)才能為后面的道路順利開(kāi)展工作。

相關(guān)文章

  • ASP.NET通過(guò)Remoting service上傳文件

    ASP.NET通過(guò)Remoting service上傳文件

    ASP.NET通過(guò)Remoting service上傳文件...
    2006-09-09
  • 談?wù)剬?duì).NET中async/await的理解

    談?wù)剬?duì).NET中async/await的理解

    本文介紹了.NET中異步編程的概念,包括async和await關(guān)鍵字的使用,以及異步編程的性能提升機(jī)制,異步編程通過(guò)非阻塞操作提高了程序執(zhí)行效率,減少了主線程的等待時(shí)間,感興趣的朋友一起看看吧
    2025-03-03
  • .Net使用RabbitMQ實(shí)現(xiàn)短信密碼重置的操作步驟

    .Net使用RabbitMQ實(shí)現(xiàn)短信密碼重置的操作步驟

    在C#開(kāi)發(fā)中,通過(guò)RabbitMQ實(shí)現(xiàn)短信服務(wù)可增強(qiáng)應(yīng)用的消息通知能力,本文介紹了使用RabbitMQ發(fā)送短信的步驟,包括安裝RabbitMQ客戶端庫(kù)、創(chuàng)建連接和通道、實(shí)現(xiàn)短信發(fā)送服務(wù)、配置RabbitMQ消費(fèi)者,并集成到用戶密碼重置流程中,通過(guò)示例代碼,可以快速理解整個(gè)實(shí)現(xiàn)過(guò)程
    2024-09-09
  • ASP.NET中使用GridView實(shí)現(xiàn)分級(jí)顯示的代碼

    ASP.NET中使用GridView實(shí)現(xiàn)分級(jí)顯示的代碼

    在實(shí)際項(xiàng)目開(kāi)發(fā)中,往往需要用到在頁(yè)面上對(duì)列表的項(xiàng)目實(shí)現(xiàn)分級(jí)顯示,在 ASP.NET中沒(méi)有現(xiàn)成的控件。
    2010-06-06
  • VS初始化命令 ASP.NET常用技巧

    VS初始化命令 ASP.NET常用技巧

    此命令會(huì)運(yùn)行幾分鐘時(shí)間,與此同時(shí),Visual Studio 清除設(shè)置并將其自身重置到其最初的狀態(tài)。
    2011-03-03
  • ASP.NET餐飲管理系統(tǒng)制作代碼分享

    ASP.NET餐飲管理系統(tǒng)制作代碼分享

    本文通過(guò)圖片+代碼的形式,詳細(xì)的介紹了餐飲管理系統(tǒng)各部分功能及其實(shí)現(xiàn)方法。餐飲管理系統(tǒng)的制作必須有一條條理性的思維方可以做好,感興趣的小伙伴們可以參考一下
    2015-09-09
  • asp.net UpdatePanel的簡(jiǎn)單用法

    asp.net UpdatePanel的簡(jiǎn)單用法

    局部更新是ajax技術(shù)的最基本,也是最重要的用法,今天大概把a(bǔ)sp.net ajax中的局部更新控件 updatepanel的用法記錄下,大家可以共同探討
    2008-11-11
  • ASP.NET Core 3.x 并發(fā)限制的實(shí)現(xiàn)代碼

    ASP.NET Core 3.x 并發(fā)限制的實(shí)現(xiàn)代碼

    這篇文章主要介紹了ASP.NET Core 3.x 并發(fā)限制的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • asp.net上傳圖片保存到數(shù)據(jù)庫(kù)的代碼

    asp.net上傳圖片保存到數(shù)據(jù)庫(kù)的代碼

    有時(shí)候某種需要將圖片保存到數(shù)據(jù)庫(kù)中,那么下面的代碼就可以參考下,下面沒(méi)有數(shù)據(jù)庫(kù)的建表說(shuō)明,但數(shù)據(jù)庫(kù)需要建立下。
    2010-07-07
  • ASP.Net刷新頁(yè)面后自動(dòng)滾動(dòng)到原來(lái)位置方法匯總

    ASP.Net刷新頁(yè)面后自動(dòng)滾動(dòng)到原來(lái)位置方法匯總

    本文給大家匯總了3種ASP.Net實(shí)現(xiàn)的刷新頁(yè)面后自動(dòng)滾動(dòng)到原來(lái)位置方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06

最新評(píng)論

桐乡市| 徐州市| 泸州市| 阿鲁科尔沁旗| 宁南县| 昭平县| 通渭县| 海宁市| 芦山县| 上饶市| 丰城市| 京山县| 上犹县| 上犹县| 察隅县| 屏山县| 孟津县| 墨江| 太康县| 武平县| 兴宁市| 锦屏县| 石柱| 鹤峰县| 宜川县| 衡南县| 理塘县| 旬邑县| 平山县| 交口县| 镶黄旗| 进贤县| 夏邑县| 电白县| 玛多县| 三江| 桐乡市| 营山县| 昌吉市| 阿勒泰市| 榆林市|