web中,post 和 get 的区别到底是什么,越详细越好?

解决方案 »

  1.   

    去google查一下应该有很多的。
      

  2.   

    以前类似的问题有很多了,其实了解那么详细干什么呢?不会是要去考什么无聊的试吧!?
    大致有下面这些吧:
    1、实现方式不一样
    2、使用方法不一样(表单提交||url编码)
    3、url编码方式不一样(不显示||明文)
    4、传送的数据量不一样(能够传送的数据量上限不一样)
    5、servlet获取数据的方法不一样(doget()、dopost())
      

  3.   

    简单来说,发出的HTTP头的第一个单词不一样(GET/POST)
    如果使用POST,在HTTP头之后还会跟随请求的数据段;如果是GET则不存在数据段其它也没有什么大的区别。
      

  4.   

    1一个后边显示参数,一个不显示参数。
    2一个可以传递大量的参数,而一个则只能传递少量。
    。。
    还有楼上的。
    ---------------------
    回复人: ywb1973(虎骨酒) ( ) 信誉:100  2005-11-07 15:47:00  得分: 0  
     
     
       以前类似的问题有很多了,其实了解那么详细干什么呢?不会是要去考什么无聊的试吧!?
    大致有下面这些吧:
    1、实现方式不一样
    2、使用方法不一样(表单提交||url编码)
    3、url编码方式不一样(不显示||明文)
    4、传送的数据量不一样(能够传送的数据量上限不一样)
    5、servlet获取数据的方法不一样(doget()、dopost())  
     
      

  5.   

    转贴:(现在一些细节问题还是很值得去关注的)
    表单提交中Get和Post方式的区别 
    1. get是从服务器上获取数据,post是向服务器传送数据。
    2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
    3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
    4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
    5. get安全性非常低,post安全性较高。
    希望对你有用!
      

  6.   

    补:servlet获取数据的方法不一样(doget()、dopost())
    所有差别基本也就至此了(刚从楼上看到的这项,觉得很有必要补上).
    希望对你有用!
      

  7.   

    从一个页面转向另一个页面的请求方式有两种,Post和Get. 如果从原理上来探究他们的区别,涉及到Http传输协议的细节,这样深究下去,就成华为人干的事了,有空可以请教一下华为高人,我一个做企业软件的实在没那么多时间也没必要去研究那些东西,所以就看一下表象吧。 所有的人都知道如下区别: 
    1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。 
    2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节. 
    3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。 我们的form表单的method方法,有两个,post,get.它在页面传值的时候的区别也就是上面提到的三点. 先来看一下post方法. 这个方法在asp时代应该跟程序员打交道很多的,因为那时候没有现在的ViewState,每个页面要恢复原来的状态,都要将页面Post给自身,然后挨个取值,重新赋值.现在这些琐碎的事情都让ViewState代劳了.所以将页面post给自身的动作,在某种程度上已经被Asp.net的程序员们忘却了,所以Post也就被大部分的忽视了,这就是技术进步的双刃剑,带来方便的同时,蒙上你的眼睛。 ViewState必须包含在<form runat="server">的窗体下,而只要包含了"runat="server""的标志,就甭想Post到其他页面中去,为什么?老盖说,我的ViewState是保存当前页面状态的,你要转到其他页面,他说,不行,**不认识的参数.如果想Post一个窗体,咋办?有四种方式可供选择. 1.在页面上新建一个form,不要加上runat="server"的标志,当然在这个窗体下的控件也就不用想用Viewstate来传值了.当在其他有runat="server"的窗体的中的按钮事件中,手动调用新建form的submit() 函数. 传送页面代码如下: 
    <!--html代码--> 
    <form id="Form1" method="post" runat="server"> 
                <input id="btnTransfer" type="button"  onclick="post();" runat="server"> 
                <input type="text" runat="server" id="SourceData"> 
            </form> 
            <form id="forPost" method="post"> 
                <input type="text" runat="server" id="SourceData2"> 
            </form> 
     
    <!--Script代码--> 
    <script language="javascript"> 
                function post() 
                { 
                    forPost.action="DestinationPage.aspx"; 
                    forPost.submit(); 
                } 
            </script> 
     
     
    接收页面 string a=Request.Form["SourceData2"].ToString(); 
    2.通过Session取值,在一个页面中赋值,在其他页面中共享,这个方式也被广泛应用,个人不倾向于用这种方式,我怕造成Session值的混乱无序,Session用来存一些公共的东西已经累得够呛了。 3.通过Context传值,在传送页面之前,将需要传递到其他页面的值存在Context中。示例代码如下: 传送页面 
    //点击某个button时触发 
    private void btnTransfer_ServerClick(object sender, EventArgs e) 
            { 
                Context.Items["SourceData"]=SourceData.Value; 
                Server.Transfer("DestinationPage.aspx"); 
            } 
    接收页面 string a=Context.Items["SourceData"].ToString(); 
    4.通过Server.Transfer的方式。 
    这个方式在方法三种已经用到了,不过可以在调用页面为要传递到被调用页面的值创建属性(当然可以直接将它设成public),这样就可以在其他页面访问了。 传送页面 
    //要传送的值 
    private  
    System.Web.UI.HtmlControls.HtmlInputText SourceData; 
     
    public string getSourceData 

      get 
      { 
        return SourceData.Value; 
      } 

     
    //传送页面 
    Server.Transfer("DestinationPage.aspx"); 
    接收页面 
    private SourceClass sourcePage; 
     
    sourcePage=(SourceClass)Context.Handler; 
                string aa=sourcePage.getSourceData; 
    以上就是Post的在不同页面传递数据的方式了。 
    下面是get方法 
    我常用的是  传送页面 
    string aa=SourceData.Value; 
                string bb=SourceData.Value; 
     
                string url="DestinationPage.aspx?parameter1="+aa+"&parameter2="+bb; 
                Response.Redirect(url,false); 
    接收页面 string aa=Request.QueryString["parameter1"].ToString(); 
                string bb=Request.QueryString["parameter2"].ToString();
      

  8.   

    post与get的区别
    METHOD="{GET,POST}":设置表单数据传送给表单处理程序的方法,当METHOD="GET"时,表单数据会被存在环境变量query_string中,表单处理程序可由此变量取得表单数据;当METHOD="POST"时,表单数据程序可由标准输入stdin取得表单数据,而表单数据的长度则记录在环境变量Content_Length中。
    一般不应该把数据存在环境变量query_string中,query_string对字符长度限制很苛刻的
    1024个字节是url的极限长度
    应该选择post提交表单通俗的讲,post就是提交一些信息量大的数据,get相反
    get的信息可以在URL中看到(request.querystring)post的看不到(request.form)
    post 是将所有表单中的信息通通提交,而get是从表单中获取个别自己想要的信息
    POST:将FORM的输入信息进行包装,CGI程序中可以用CONTENT_LENGTH环境变量决定传送输入信息的长度,再从标准输入将内容读出GET:将FORM的输入信息作为字符串附加在ACTION所设定的URL的后面,中间用“?”隔开,CGI程序可用QUERY_STRING环境变量去取得FORM所传送的输入信息。系统环境变量的长度限制了输入字符串的长度
      

  9.   

    GET和POST没太大区别,POST就是数据传递上功能多一些