form_action: 表单数据提交到此页面

下面的表单拥有两个输入字段以及一个提交按钮,当提交表单时,表单数据会提交到名为 "form_action.asp" 的页面:

<form action="form_action.asp" method="get">
  <p>First name: <input type="text" name="fname" /></p>
  <p>Last name: <input type="text" name="lname" /></p>
  <input type="submit" value="Submit" />
</form>

form_mothod:

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

GET和POST还有一个重大区别,简单的说:

GET产生一个TCP数据包;POST产生两个TCP数据包。(GET只送一次,POST送两次第一次打招呼,第二次再送,具体情况要看网络环境的快慢)

并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

1.安全性: get 暴露在url 中,历史纪录中  post > get

2.编码:

get只能向服务器发送ASCII字符,而post则可以发送ISO 10646中的字符

get和post对应的enctype属性有区别:

application/x-www-form-urlencoded 
在发送前编码所有字符(默认)

multipart/form-data 
不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。

3.提交数据的长度

IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度,如果URL超出了这个限制,提交form时IE不会有任何反映。

4.缓存

由于一个get得到的结果直接对应到一个URL,所以get的结果页面有可能被浏览器缓存,而post一般不能

5.引用和SEO

最本质的区别

get是用来从服务器上获得数据,而post是用来向服务器上传递数据

6.什么时候选择get 或者post

若符合下列任一情况,则用post方法: 
a.请求的结果有持续性的副作用,例如:数据库内添加新的数据行。 
b.若使用get方法,则表单上收集的数据可能让URL过长。 
c.要传送的数据不是采用ASCII编码。

若符合下列任一情况,则用get方法: 
a.请求是为了查找资源,html表单数据仅用来搜索。 
b.请求结果无持续性的副作用。 
c.收集的数据及html表单内的输入字段名称的总长不超过1024个字符。

7.浏览器差异

form_enctype:

form表单的enctype设置为multipart/form-data后,表单中除了文件后台能拿到,其他值后台都拿不到。

一、application/x-www-form-urlencoded:
1、表单中的enctype值如果不设置,则默认是application/x-www-form-urlencoded,它会将表单中的数据变为键值对
的形式
2、如果action为get,则将表单数据编码为(name1=value1&name2=value2…),然后把这个字符串加到url后面,中间
用?分隔
3、如果action为post,浏览器把form数据封装到http body中,然后发送到服务器。
二、text/plain:
表单以纯文本形式进行编码
三、multipart/form-data:
1、当我们上传的含有非文本内容,即含有文件(txt、MP3等)的时候,需要将form的enctype设置为multipart/form-
data。
2.将表单中的数据变成二进制数据进行上传,所以这时如果用request是无法直接获取到相应表单的值的

form表单的三个属性 action 、mothod 、 enctype。的更多相关文章

  1. 通过button将form表单的数据提交到action层

    form表单中不需要写action的路径,需要给form表单一个唯一的id,将你要提交的信息的表单中的标签name="action中的javabean对象.javabean属性". ...

  2. form表单提交三种方式,demo实例详解

    第一种:使用type=submit  可以直接提交 <html> <head> <title>submit直接提交</title> </head& ...

  3. form表单Get方式提交时,action中带参数传递不了

    <form action="getPostServlet/getPost.do?param4=param4" method="get"> <i ...

  4. (转)一个form表单实现提交多个action

    方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4 ...

  5. form表单设置input文本属性只读,不可更改

    记住一条好用的,设置readonly属性为true <input     readonly=''true"> 更多方法,转载: http://www.jb51.net/web/6 ...

  6. 上传文件时form表单需要添加的属性

    enctype="multipart/form-data"

  7. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  8. ajax提交整个form表单

    在项目开发中,有时提交form表单时不能单单用action或者jquery的 表单提交方法有三种,主要说下第三种 第一种:用form自带属性action提交 第二种:用jquery提交:$(" ...

  9. Form表单和里边的小部件

    一.Form表单:form表单是用来收集用户信息,并向后台提交信息的区域表单: 1.属性 “action” 是 “行为“的意思,该属性的值表示:用户提交信息到哪个页面: 2.属性”method“ 是” ...

随机推荐

  1. java练习-判断字符串是否都是数字

    方法1: package everyDayPratise; public class IsAllNumber { public static boolean method1(String s) { i ...

  2. 黄聪:C#获取网页HTML内容的三种方式

    C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse. 方法一:使用WebClient static void ...

  3. net use远程重启服务器

      在命令行工具中分别输入如下3条命令 net use \\10.10.1.100\ipc$ Password /user:Username shutdown -f -r -m \\10.10.1.1 ...

  4. Pytest高级进阶之Fixture

    From: https://www.cnblogs.com/feiyi211/p/6626314.html 一. fixture介绍 fixture是pytest的一个闪光点,pytest要精通怎么能 ...

  5. Solr使用访问地址控制索引的,删除、创建

    启动Solr,删除全部索引数据: http://localhost:8080/solr/update/?stream.body=<delete><query>*:*</q ...

  6. CF963D Frequency of String

    https://codeforces.com/problemset/problem/123/D 题目大意 给一个字符串 \(s\),每次询问一个字符串 \(m_i\) 和一个正整数 \(k_i\),问 ...

  7. 通过 Composer 安装 Laravel 安装器

    composer global require "laravel/installer" linux下确保 $HOME/.composer/vendor/bin 在系统路径中(Mac ...

  8. 应用程序嵌入PowerBI报表登陆认证问题解决

    https://github.com/AzureAD/azure-activedirectory-library-for-java/issues/144

  9. 关于js-xlsx的简单使用

    关于js-xlsx的简单使用 最近要做一个东西用到对excel的操作,就是在前端将excel加载进来,操作后再生成excel,在网上找了很多种办法,能够实现的demo是下面这个: 纯前端利用 js-x ...

  10. shell脚本三——正则表达式

    shell函数:shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数.给这段代码起个名字称为函数名,后续可以直接调用该段代码. 格式:fun() { 命令 } Shell ...