表單form的提交有兩種方式,一種是get的方法,一種是post 的方法看下面代碼,理解兩種提交的區別:
get方法傳送
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server" method="get"> <div> 你的id<asp:TextBox ID="name" runat="server"></asp:TextBox><br /> <br /> 你的名字<asp:TextBox ID="website" runat="server"></asp:TextBox><br /> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="send" /><br /> <br /> </div> </form></body></html>
public partial class Default3 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string id = Request.QueryString["name"]; string website = Request.QueryString["website"]; Response.Write("輸入id為"+id); Response.Write("<br>"); Response.Write("輸入名字" + website); }}post方法傳送
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server" method="post"> <div> 你的id<asp:TextBox ID="name" runat="server"></asp:TextBox><br /> <br /> 你的名字<asp:TextBox ID="website" runat="server"></asp:TextBox><br /> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="send" /><br /> <br /> </div> </form></body></html>
public partial class Default3 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string id = Request.Form["name"]; string website = Request.Form["website"]; Response.Write("輸入id為"+id); Response.Write("<br>"); Response.Write("輸入名字" + website); }}
get方法的Urlhttp://localhost:1092/SlwyWeb/Default3.aspx?__VIEWSTATE=%2FwEPDwUKLTg0OTIzODQwNWRk2HGzoy1tUN1xDnU%2BUD9XgpNyjdfyAmJtrK%2Fh2qQ9sa4%3D&name=12&website=12&Button1=send
post方法的Urlhttp://localhost:1092/SlwyWeb/Default3.aspx?name=&website=&Button1=send
可以看出來post的方法的值不是存放在url的。
那post方法的值是放在那裡的呢?
get方法的url為什麼會有__VIEWSTATE=%2FwEPDwUKLTg0OTIzODQwNWRk2HGzoy1tUN1xDnU%2BUD9XgpNyjdfyAmJtrK%2Fh2qQ9sa4%3D 這串字元呢?
1. get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
2. 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。
3. get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
4. get安全性非常低,post安全性較高。但是get執行效率卻比Post方法好。