Get和Post请求

来源:互联网 发布:java技术支持 编辑:程序博客网 时间:2024/05/07 07:00

浏览器向服务器发送数据最常用的就是Get和Post。

表单

表单用来收集用户的数据
1.只有放到form标签内的标签,在点击submit提交按钮之后才会被提交到服务器。通过action属性设定表单被提交给哪个页面。
2.只有input、textarea、select这三种类型的标签中的数据可以被提交。
3.只有value属性的值会被提交(只有value属性才是用户输入的属性)
4.标签必须设定name属性。服务器通过name来获取value。

Post请求

做一个小demo。
用vs创建一个html和一般处理程序。代码如下

//test.html<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>    <meta charset="utf-8" /></head><body>    <form action="test.ashx" method="post">        <input type="text" name="txtName" value="Hello" />        <input type="submit" value="提交" />    </form></body></html>
//test.ashxusing System.Web;namespace UI{    /// <summary>    /// test 的摘要说明    /// </summary>    public class test : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            string name=context.Request.Form["txtName"];//接受post请求传过来的数据            context.Response.Write(name);//在页面中输出name的值        }        public bool IsReusable        {            get            {                return false;            }        }    }}

浏览html网页显示为
这里写图片描述
点击提交按钮后,显示的结果为
这里写图片描述
在这一过程中,请求报文的内容为
这里写图片描述
响应报文中的内容为
这里写图片描述

Get请求

把上个例子中form标签的method属性改成get(也可以直接把这属性删掉,因为默认为get请求)。
然后再把test.ashx中的string name=context.Request.Form["txtName"];改成string name=context.Request.QueryString["txtName"];
浏览html网页显示为
这里写图片描述
点击提交后网页显示为
这里写图片描述
这一过程的请求报文为
这里写图片描述
响应报文为
这里写图片描述

直接输入地址

除了通过表单中的get或post,点击提交按钮提交。
还可以直接在浏览器中输入地址,敲回车,这也相当于向服务器发送get请求。
比如我直接在地址栏中输入
http://localhost:33102/test.ashx?txtName=World
没有点击提交按钮
显示的结果为
这里写图片描述

两者的区别

get请求通过url传递表单值,格式为http://localhost:33102/test.ashx?textName=Hello 服务端文件名后跟着“?”,表单元素name属性的值=用户输入的值(value属性的值),如果要提交多个属性值用&分隔开。
在服务端用QueryString来接收数据。
post请求通过url看不到提交的表单的值,登陆都是用post(是相对安全的,但通过报文还是可以看到的),数据全都放在请求报文的请求体中。格式为,表单元素name属性的值=用户输入的值(value属性的值),如果要提交多个属性值用&分隔开。在服务端用Form来接收数据。
另外,无论是get还是post都可以用
‘string name=context.Request[“txtName”];’这种方式来接收,但如果知道是哪种方式的话最好就用对应的那种方式,减少程序内部做的判断。
get传递的数据量是有限的,如果要传递大量数据不能用get,比如上传文件,post则没有这个限制。
搜索的时候用get提交,比如我搜索到了一些东西, 然后我把网址发送给了你,因为地址栏中就有我要搜索的东西,发送给你后,你就能直接打开看到我搜索到的东西。post方式的正确地址很难直接发给别人。

0 0
原创粉丝点击