HTTP方法中两种最常用的 HTTP 方法是:GET 和 POST。
### 一,什么是 HTTP
超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。HTTP 的工作方式是客户端与服务器之间
的请求-应答协议。web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能
被请求的内容。
两种 HTTP 请求方法:在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
(1)GET - 从指定的资源请求数据。
(2)POST - 向指定的资源提交要被处理的数据。
GET和POST区别表格:
![](https://box.kancloud.cn/2016-04-28_5721558a7c57b.jpg)
### 二,表单(算作是客户端)提交代码:
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>HTML表单GET和POST提交方式演示</title>
</head>
<body> <div align="center">
<form id="form1" action="收到数据的页面.aspx" method="get">
<!--另一种提交方式是将form标签的method属性的值改为“method="post"”-->
<table border="1" bordercolor="#0000FF" cellpadding="10" cellspacing="0" width="600">
<tr>
<th colspan="2">注册表单</th>
</tr>
<tr>
<td>用户名称:</td>
<td>
<input type="text" name="user" />
</td>
</tr>
<tr>
<td>输入密码:</td>
<td>
<input type="password" name="psw" />
</td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="repsw" />
</td>
</tr>
<tr>
<td>选择性别:</td>
<td>
<input type="radio" name="sex" value="man" />男
<input type="radio" name="sex" value="woman" />女
</td>
</tr>
<tr>
<td>选择技术:</td>
<td><input type="checkbox" name="technology" value="JAVA" />JAVA
<input type="checkbox" name="technology" value="HTML" />HTML
<input type="checkbox" name="technology" value="CSS" />CSS
</td>
</tr>
<tr>
<td>选择国家</td>
<td>
<select name="country">
<option value="none">--选择国家--</option>
<option value="China">中国</option>
<option value="USA">美国</option>
<option value="UK">英国</option>
</select>
</td>
</tr>
<tr>
<th colspan="2">
<input type="reset" value="清除数据" />
<input type="submit" value="提交数据" />
</th>
</tr>
</table>
</form>
</div>
</body>
</html>
~~~
我们在客户端这里看不出任何区别,但是表单提交给服务器端就会有明显的区别(也是最直接的区别):
GET提交方式的地址栏:
file:///C:/Users/Administrator/Desktop/收到数据的页
面.aspxuser=abc&psw=123&repsw=123&sex=man&technology=JAVA&country=China
POST提交方式的地址栏:
file:///C:/Users/Administrator/Desktop/收到数据的页面.aspx
从上述的内容可以看出几点区别:
(1)get 提交的信息都显示在地址栏中;post提交的信息不显示在地址栏中。
(2)get提交对于敏感信息数据不安全;post提交对于敏感信息安全;
(3)get提交对于大数据不行,因为地址栏存储的信息是有限的;post可提交大体积的数据。
(4)get提交将信息封装到了请求信息的请求行中; post提交将信息封装到了请求体中;
### 三,在服务器端的区别
如果出现将中文提交到tomcat服务器,服务器默认会用iso8859-1进行解码,会出现乱码,通过iso8859-1进行编
码,再用指定的中文表解码,即可;
但对于post提交方式提交的中文还有另一种解决办法,就是直接使用服务端一个对象request对象的
setCharacterEncoding方法直接设置指定的中文代码表就可以将中文数据解析出来,这个方法只对请求中的数据进行
解码。
### 四,通过 get 或者 post 方法都可以获得 Form 的数据,两者主要区别在于以下几方面:
(1)GET方式:
URL 改变,在URL 里显示 HTML Form 参数的 name/value 值。
只适合有少量参数的 HTML Form,因为 URL 长度有字符限制,不能无限长。
涉及安全性的信息,比如用户密码,不能用 get,因为会在 URL 上显示,不安全。
(2)POST方式:
URL 不改变,不在 URL 里显示 HTML Form 的数据。
Form 提交的信息没有长度限制。
涉及安全性的信息,如用户密码,应采用 post 方式。
### 五,总结
客户端和服务器端交互的三种方式:
(1)地址栏输入url地址;get
(2)超链接; get
(3)表单; get 和 post
GET和POST的优缺点:
(1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
(2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
(3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
(4)Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
(5)Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。默认是用ISO-8859-1编码 。
(6)Get是Form的默认方法。
(7)get的执行效率要高于post。
(8)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取
提交的数据。
目前不会做服务器端,因此难以提供更有效的数据论证。学习了服务器端,在进行更详细的理解。
- 前言
- HTML学习1:Dreamweaver8的安装
- HTML学习2:初识HTML
- HTML学习3:常用标签之文本标签
- HTML学习4:常用标签之列表标签
- HTML学习5:常用标签之图像标签
- HTML学习6:常用标签之超链接标签
- HTML学习7:常用标签之表格标签
- HTML学习8:常用标签之框架标签
- HTML学习9:常用标签之表单标签
- HTML学习10:表单格式化
- HTML学习11:HTTP 方法
- HTML学习12:其他常见标签之头标签
- HTML学习13:其他常见标签之体标签
- 轻松学习JavaScript一:为什么学习JavaScript
- 轻松学习JavaScript二:JavaScript语言的基本语法要求
- 轻松学习JavaScript三:JavaScript与HTML的结合
- 轻松学习JavaScript四:JS点击灯泡来点亮或熄灭这盏灯的网页特效映射出JS在HTML中作用
- 轻松学习JavaScript五:JavaScript的变量和数据类型
- 轻松学习JavaScript六:JavaScript的表达式与运算符
- 轻松学习JavaScript七:JavaScript的流程控制语句
- 轻松学习JavaScript八:JavaScript函数
- 轻松学习JavaScript九:JavaScript对象和数组
- 轻松学习JavaScript十:JavaScript的Date对象制作一个简易钟表
- 轻松学习JavaScript十一:JavaScript基本类型(包含类型转换)和引用类型
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(一)
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(二)
- 轻松学习JavaScript十三:JavaScript基于面向对象之继承(包含面向对象继承机制)
- 轻松学习JavaScript十四:JavaScript的RegExp对象(正则表达式)
- 轻松学习JavaScript十五:JavaScript之BOM简介
- 轻松学习JavaScript十六:JavaScript的BOM学习(一)
- 轻松学习JavaScript十七:JavaScript的BOM学习(二)
- 轻松学习JavaScript二十九:JavaScript中的this详解
- CSS基础学习一:CSS概述
- CSS基础学习二:如何创建 CSS
- CSS基础学习三:CSS语法
- CSS基础学习四:元素选择器
- CSS基础学习五:类选择器
- CSS基础学习六:id选择器
- CSS基础学习七:属性选择器
- CSS基础学习八:派生选择器
- CSS基础学习九:伪类
- CSS基础学习十:伪元素
- CSS基础学习十一:选择器的优先级
- CSS基础学习十二:CSS样式
- CSS基础学习十三:盒子模型
- CSS基础学习十四:盒子模型补充之display属性设置
- CSS基础学习十五:盒子模型补充之外边距合并
- CSS基础学习十六:CSS盒子模型补充之border-radius属性
- CSS基础学习十七:CSS布局之定位
- CSS基础学习十八:CSS布局之浮动
- CSS基础学习十九:CSS布局之图文混排,图像签名,多图拼接和图片特效
- DIV+CSS实操一:经管系网页总体模块布局
- DIV+CSS实操二:经管系网页添加导航栏和友情链接栏
- DIV+CSS实操三:经管系网页内容模块添加标题栏和版权信息模块
- DIV+CSS实操四:经管系网页内容模块内容添加(一)
- DIV+CSS实操五:经管系网页内容模块内容添加(二)
- DIV+CSS实操六:经管系网页添加导航栏下拉菜单
- DIV+CSS实操七:中文系内容模块控制文本不换行和超出指定宽度后用省略号代替
- JS中实现字符串和数组的相互转化