文档章节

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

浮躁的码农
 浮躁的码农
发布于 2015/07/09 16:05
字数 1006
阅读 12
收藏 0

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



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

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

[html] view plaincopy

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

  2.   

  3.         <p>用户名:<input id="txtUserName" name="txtUserName" type="text" /></p>  <!--用户名文本框-->  

  4.         <p>密 码:<input id="txtPWD" name="txtPWD" type="text" /></p>                     <!--密码文本框-->  

  5.         <p><input id="subLogin"  name ="subLogin" type="submit" value="提交" /></p><!--提交按钮-->  

  6.           

  7. </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方法提交数据的表单:

[html] view plaincopy

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

  2.   

  3.         <p>用户名:<input id="txtUserName" name="txtUserName" type="text" /></p>  <!--用户名文本框-->  

  4.         <p>密 码:<input id="txtPWD" name="txtPWD" type="text" /></p>                     <!--密码文本框-->  

  5.         <p><input id="subLogin"  name ="subLogin" type="submit" value="提交" /></p><!--提交按钮-->  

  6.           

  7. </form>  


浏览器中效果


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

[csharp] view plaincopy

  1. protected void Page_Load(object sender, EventArgs e)  

  2.         {  

  3.   

  4.             string strUserName = Request.Form["txtUserName"];  

  5.             string strPWD=Request .Form["txtPWD"];  

  6.   

  7.             if (strUserName == "张三" && strPWD == "123456")  

  8.             {  

  9.                 Response.Write(strUserName + "登录成功!");  

  10.             }  

  11.             else  

  12.             {  

  13.                 Response.Redirect("Login.htm");  

  14.             }  

  15.               

  16.         }  


运行的结果



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

2、Get方法

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

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

[html] view plaincopy

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

  2.   

  3.         <p>用户名:<input id="txtUserName" name="txtUserName" type="text" /></p>  <!--用户名文本框-->  

  4.         <p>密 码:<input id="txtPWD" name="txtPWD" type="text" /></p>                     <!--密码文本框-->  

  5.         <p><input id="subLogin"  name ="subLogin" type="submit" value="提交" /></p><!--提交按钮-->  

  6.           

  7. </form>  



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

[csharp] view plaincopy

  1. protected void Page_Load(object sender, EventArgs e)  

  2.         {  

  3.             string strUserName = Request.QueryString ["txtUserName"];  

  4.             string strPWD = Request.QueryString["txtPWD"];  

  5.   

  6.             if (strUserName == "张三" && strPWD == "123456")  

  7.             {  

  8.                 Response.Write(strUserName + "登录成功!");  

  9.             }  

  10.             else  

  11.             {  

  12.                 Response.Redirect("Login.htm");  

  13.             }  

  14.               

  15.               

  16.         }  


运行结果:


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

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



本文转载自:

浮躁的码农

浮躁的码农

粉丝 71
博文 854
码字总数 156119
作品 0
松江
程序员
私信 提问
GET/POST请求的合理使用

在我们求职之初,可能都会被问到Http请求中的GET/POST有什么区别!当时我们可能会认为这还有区别?!可能因为编码习惯,我们会在doGet()方法里调用doPost()方法【或者互相调用】。但我们真的了...

hanzhankang
2012/10/29
0
4
HTTP协议——请求格式及方法

一、HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成: ① 请求方法 URI 协议/版本 ② 请求头(Request Header) ③ 请...

墨梅
2014/01/16
0
0
Servlet一次乱码排查后的总结

由来 在写一个小小的表单提交功能的时候,出现了乱码,很奇怪request上来的参数全部是乱码,而从数据库查询出来的中文显示到页面正常,锁定肯定是request对象那里出了问题。后来经过排查,发...

路小磊
2014/07/04
0
24
防止表单重复提交的八种简单有效的策略

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次。 点击刷新按钮。 使用浏览器后退按钮重复之前的操作,导...

为了美好的明天
2018/04/19
0
0
Flask-WTF 之防止CSRF***学习记录

CSRF 保护 这部分文档介绍了 CSRF 保护。 为什么需要 CSRF? Flask-WTF 表单保护你免受 CSRF 威胁,你不需要有任何担心。尽管如此,如果你有不包含表单的视图,那么它们仍需要保护。 例如,由...

MK先生
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
1
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
2
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部