zoukankan      html  css  js  c++  java
  • Asp.netPost&Get转

    http://blog.sina.com.cn/s/blog_5a8b8eb80100j7hv.html

    http://www.cnblogs.com/zhangmengjie/archive/2012/03/13/2394290.html
    感谢以上两位大神

    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安全性较高。但是执行效率却比Post方法好。

    建议:
    1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
    2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

    1. 区别: 
    在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有以下几点不同:

    1、Get方法通过URL请求来传递用户的输入。Get方法传递的参数和值在URL上用?name=value&name=value的形式显示。Post方法通过另外的形式。

    2、通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果登陆页面可以被浏览器缓存或其他人可以访问客户的这台机器。
    那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。

    3、显然Get方法局限性在于当要传的值很多是,就不便这样,否则URL可能超长度而出错。
     
    
    从一个页面转向另一个页面的请求方式有两种,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() 函数.

    Request对象--&Post&Get页面传值

    共3个页面,main1.aspx,get.aspx和 post.aspx

     1.post.aspx(只有html代码)

     <form id="form1" action="main.aspx" method="post" >

      <div>  <input id="Text1" type="text" name="t1" /><br />  

    <input id="Text2" type="text" name="t2" /><br />  

    <input id="Button1" type="button" value="button"  

    onclick="return Button1_onclick()" /><br />

     2.main1.aspx  

    protected void Page_Load(object sender, EventArgs e)

    {//post方法

    string username = Request.QueryString["name"].ToString();

     string pwd = Request.QueryString["pass"].ToString();

    Response.Write("<font size=18>欢迎" + username + ",密码是:" + pwd + "</font>");  

     //get方法   //string username=Request.Form["t1"].ToString();  

    //string pwd=Request.Form["t2"].ToString();  

     //Response.Write("<font size=18>欢迎"+username+",密码是:"+pwd+"</font>");

     3.get.aspx

     protected void Button1_Click(object sender, EventArgs e)        

     {  Response.Redirect("main.aspx?name="+this.TextBox1.Text+"&pass="+this.TextBox2.Text);   }     

     总结:

     1.页面传值方法

    <1>.利用表单传递数据/Post方法(写的是html代码);

    获取表单的字段值语法:Request.Form["控件name属性"]; 可以省略为Request["控件name属性"];

    使用Post方法需注意:

     1.Form窗体不能运行在服务器端,要把runat=server要去掉,需要在<form>标记中添加action属性,将标记中的method属性设置为post;

     2:控件要使用HTML控件

     3:获取值的页面只识别控件的name属性,所以需要对控件需要添加name属性   

    <2>.使用URL传值/Get方法(写的是C#代码)

     Request.QueryString["字段名称"];

    Get传值时的注意事项:  

       1:转链接时由“?”将转链接网址分为两个部分,前半部分为网址,后半部分为传递的字符串(变量名与值的组合)  

       2:若需要传递多个值,则将这些键值使用“&”隔开        

    2. Post方法与Get方法的区别

    <1>.get是通过url请求来传递数据,数据会直接显示在url上,post是通过HTTPpost机制,其内容在header里,处理过程用户无法看到。

    <2>.get是从服务器来获取数据,post是向服务器传送数据。

    <3>.get传输数据量很小,限制在2kB左右。post传输量相对较大,不过也有字节限制。

     <4>.get安全性很低,post安全性较高,但是执行效率get较高。

  • 相关阅读:
    docker从容器中怎么访问宿主机
    fail2ban CentOS7安装
    关于sql当中的isnull和ifnull的区别
    关于mybatis反向生成的时候,对于数据库当中的数据类型是text的处理。
    关于Java当中的MapUtils工具类的使用和注意事项。
    在大数据管理平台HDP的ambria的时候遇到python的安全认证的问题
    通过java代码实现调用excel当中的宏的操作。
    通过vba实现对word当中个的标签进行批量的替换
    通过vba实现对word当中的表格动态的插入行,同时对表中进行数据的填充。
    关于vba实现删除word文档中的指定表格。
  • 原文地址:https://www.cnblogs.com/aqbyygyyga/p/2869466.html
Copyright © 2011-2022 走看看