表单提交Post方法、Get方法背后的秘密

表单大家都很熟悉,上网的时候经常会遇到表单






        表单用来接受用户的输入,并将用户的输入以“name=value值对”集合的形式提交到服务器进行处理。那么表单是怎样将数据提交到服务器的?服务器是怎样对表单数据进行处理的?下面我将为大家揭开表单提交背后的秘密


表单用<form></form> 标记定义,表单里面放置各种接受用户输入的控件


<form id="login" name="login" method ="get"  action="Get.aspx">

        <p>用户名:<input id="txtUserName" name="txtUserName" type="text" /></p>  <!--用户名文本框-->
        <p>密 码:<input id="txtPWD" name="txtPWD" type="text" /></p>                     <!--密码文本框-->
        <p><input id="subLogin"  name ="subLogin" type="submit" value="提交" /></p><!--提交按钮-->
        
</form>



首先我们来看一下表单form的一些属性

1、id:表单的唯一标识

2、name:表单的名字

3、method:定义表单提交的方法,有两种方法: Post方法和Get方法

4、action:用于处理表单的服务器端页面(以URL 形式表示)

       表单中的控件有两个属性是非常重要的:name属性和value属性,每一个控件的这两个属性将构成“name-value对”提交到action属性所定义的页面进行处理

前边讲到表单提交有两种方法:post和get,那么这两种方法有什么区别呢?

1、post方法

       用这种方法提交的表单,数据将以数据块的形式提交到服务器,表单数据不会出现在URL中,所以用这种方式提交的表单数据是安全的。如果表单数据中包含类似于密码等数据,建议使用post方法


用post方法提交数据的表单:

<form id="login" name="login" method ="Post"  action="Post.aspx">

        <p>用户名:<input id="txtUserName" name="txtUserName" type="text" /></p>  <!--用户名文本框-->
        <p>密 码:<input id="txtPWD" name="txtPWD" type="text" /></p>                     <!--密码文本框-->
        <p><input id="subLogin"  name ="subLogin" type="submit" value="提交" /></p><!--提交按钮-->
        
</form>

浏览器中效果




处理表单的Post.aspx页面代码

protected void Page_Load(object sender, EventArgs e)
        {

            string strUserName = Request.Form["txtUserName"];
            string strPWD=Request .Form["txtPWD"];

            if (strUserName == "张三" && strPWD == "123456")
            {
                Response.Write(strUserName + "登录成功!");
            }
            else
            {
                Response.Redirect("Login.htm");
            }
            
        }

运行的结果




        由以上代码可知,服务器端页面接收表单数据所用的方法是 Request.Form["表单控件的name属性"],接收到数据后便可以进行处理,然后返回结果


2、Get方法

      这是发送表单数据的默认方法,这种方法会以 “?name1=value1&name2=value2”的形式,将表单数据附加到URL的后面,提交到服务器处理,这种方法安全性当然不如post方法,因为表单数据会暴露在URL中,但是它的处理效率要比post方法高。如果表单中的数据没什么隐私数据,建议使用get方法,它的效率较高



用get方法提交数据的表单:

<form id="login" name="login" method ="get"  action="Get.aspx">

        <p>用户名:<input id="txtUserName" name="txtUserName" type="text" /></p>  <!--用户名文本框-->
        <p>密 码:<input id="txtPWD" name="txtPWD" type="text" /></p>                     <!--密码文本框-->
        <p><input id="subLogin"  name ="subLogin" type="submit" value="提交" /></p><!--提交按钮-->
        
</form>


处理表单的Get.aspx页面代码

protected void Page_Load(object sender, EventArgs e)
        {
            string strUserName = Request.QueryString ["txtUserName"];
            string strPWD = Request.QueryString["txtPWD"];

            if (strUserName == "张三" && strPWD == "123456")
            {
                Response.Write(strUserName + "登录成功!");
            }
            else
            {
                Response.Redirect("Login.htm");
            }
            
            
        }

运行结果:




       由以上代码可知,服务器端页面接收表单数据所用的方法是  Request.QueryString  ["表单控件的name属性"],接收到数据后便可以进行处理,然后返回结果


       那么我们在用VS编程的时候会发现,aspx页面的表单并没有指定action属性,那么它的 表单由哪个页面处理呢?aspx页面的表单默认是由本页面处理的,当然你也可以指定由其他aspx页面处理




         希望这篇文章能对大家有所帮助。


  • 32
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 37
    评论
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值