向服务器端提交数据的两种方式

  1. 朴素版:                                                                                                                                                                                            当客户端点击提交按钮以后,浏览器就会收集页面的表单元素的namevalue值,然后以name为key、 value为值的键值对的形式发送到服务器端,这些表单元素包括:input系列的标签、select、textarea等表单元素,而且这些元素也只能发送value的值,对于其他的属性值也不能够直接发送,其他标签的属性值更是不能够直接发送到服务器端与服务器端直接交互,它们都需要借助于表单元素(input系列的标签、select、textarea)与服务器通信,在这里表单元素的action  method都需要自己手动指定,而豪华版则无需指定,一切自动化,默认为post方式发送;HTTP定义了与服务器交互的不同方法,最基本的方法是 GET  POST:                                                                                                                                                                                                                                                      
    (1)get是从服务器上获取数据,post是向服务器传送数据。
    (2)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
    (3) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据,两种方式都可以通过Request["keyname"]的方式获取值。
    (4)   GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
    (5)   安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好
    
                                                                                                                                                                                                                                
  2. 豪华版:                                                                                        所谓豪华版就是使用.net的高度封装的服务器控件与服务器进行通信,他的使用方法简单,即使是 <asp:Label等控制显示的标签控件与服务器端的交互也同<asp:Textbox一样容易与后台通信;那是因为我们在使用.net服务器控件控件的时候,.net在页面中为我们自动增加了一个input hidden也就是常说的viewstate,就是这个viewstate保存了非表单元素的值然后以表单元素的方式发给服务器,如果我们仅用页面级别的viewstate,那么表单元素不会受影响,而非表单元素则受影响,其实两种方式的原理都是一样的,只是微软帮我们做了很多的事情,让我们更加高效的开发程序;
原文地址:https://www.cnblogs.com/LittleFeiHu/p/1938346.html