JSP中get和ajax post get 区别方法的区别

博客分类:
&& get与post到底什么区别,这个问题一直困扰了我好久,直到我看到了head first servlet这本书。这本书上面把二者的区别讲得比较透彻。
&& 当用户向服务器发送请求时,包括两部分:请求首部和消息体。get()方法把参数放在请求首部,而post()方法把参数放在消息体。这就导致有两点不一样:第一,get()方法传递的参数可以被任何人在地址栏中看到,而post()方法不可以被看到。第二,由于请求首部的信息容量是有限的,所以get()方法传递的参数是有限的,而post()方法可以向服务器传递任意多个参数。
&&& 另外,当你想要把当前页面的内容建立书签时,使用get()方法是可以的,而是用post方法是不可以的。
&&& 最后,get()方法是幂等的,而post()方法不是幂等的。具体的幂等的含义,请参考head first servlet&jsp 这本书,绝对值得一读,解决了我很多的困惑。
浏览: 44552 次
请问 如果是自动提交的话,每执行一句sql 数据就直接存储到数 ...
今天用到final关键字的用法,来查看了一下,顿时就明白了。。 ...
,为什么这么多人踩呢,我辛辛苦苦写的啊,容易吗。
我的也是,照你的方法解决了……只能说,靠……
其实真的没什么的,过去的成绩好与坏都不是你带出来的,用不着自责 ...JSP之get方法和post方法的区别
作者:用户
本文讲的是JSP之get方法和post方法的区别,
1:提交 表单的方法不同
使用get方法提交表单,请求的参数在请求的头部,可以通过request.getQueryString()方法获取请求参数,
且request.getContentLength()方法返回值为-1;使用po
1:提交 表单的方法不同
使用get方法提交表单,请求的参数在请求的头部,可以通过request.getQueryString()方法获取请求参数,
且request.getContentLength()方法返回值为-1;使用post方法提交表单,请求的参数存放在请求体里,所
request.getQueryString方法获取不到请求参数,request.getContentLength()可以获得请求体的长度。
通过get方法提交表单,因为请求表单存放在请求的头部,所以会在浏览器地址栏显示;而通过post方法提
交则不会在地址栏显示,相对安全些。并且由于不同浏览器对地址栏的长度各有不同的限制,故采取get方法
提交,则请求参数的长度也会受到限制,而用post方法提交的请求请求参数放在请求体里,请求体长度没有限制,则请求参数长度也没有限制。
get方法提交表单是用字符方式提交,而post提交表单字符和字节方式都行。
通过实例了解post和get的http请求过程
通过上面的分析,已经对GET和POST有所了解,也能感觉到他俩有着本质上的区别就是一个是拿来,一个是要更新修改。
下面就通过HTTPLOOK软件来看看他们是怎样进行HTPP请求的,它们到底是怎样进行传输的。
首先建立两个jsp页面用来测试:
第一个页面是post_get_jsp(代码如下):
&%@ page language="java" contentType="text/ charset=GB18030"
pageEncoding="GB18030"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
&meta http-equiv="Content-Type" content="text/ charset=GB18030"&
&title&Insert title here&/title&
&form name="aaForm" action="http://localhost:8080/post_get/test.jsp" method="get"&
&input type="text" id="text1" name="text1" value="dadfdf"&
&input type="submit" id="submit1" name="submit2" value="提交"&
第二个页面是test.jsp(代码如下):
&%@ page language="java" contentType="text/ charset=GB18030"
pageEncoding="GB18030"%&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
String a=request.getParameter("text1");
out.println(a);
&meta http-equiv="Content-Type" content="text/ charset=GB18030"&
&title&Insert title here&/title&
&h1&ddfdgdg&/h1&
简单说一下http请求:
&request line&
&blank line&
&request-body&
在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据。
开始测试post提交
http请求如下:
开始测试get提交
http请求如下:
POST与GET区别
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
②. 从上面的http请求中就能看出,GET提交是将请求的数据附加到URL之后,用?分割、参数用&连接。并且字符串已经被加密。而post的提交是放到了http包中。从这点看来GET请求的地址栏会改变,RUL附加上了请求的数据,而POST地址栏不会改变,UTL没有变化。更加深一层看GET的安全性不高,很容易暴露信息。
③. 另外虽然http协议没有对传输数据大小进行限制也没有对url长度进行限制,但是实际情况中浏览器对url进行限制,这样GET的传输数据大小随着URL长度被限制而受到限制。反观POST由于不是通过URL传值,所以没有限制。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
jsp中get和post的区别、jsp区别get post吗、get和post方法的区别、get 和post方法区别、jsp get post,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
POST和GET的根本区别是什么?(请不要回答POST安全或POST传递的信息容量大)
请从数据包报文的角度分析POST和GET的区别
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
从RESTful视角来看:
1. GET是查询资源,POST是增加资源
2. 幂等特性。
GET,PUT,DELETE都是幂等操作。
POST不是。
具体你可以google一个restful相关文章。阮一峰这个也可以看看:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
协议角度来说, POST和GET只有报文第一行的METHOD不同,GET也是可以携带CONTENT-BODY的
补充,post也可以接收query string,最简单的栗子就是
&form method="post" action="/query.do?type=1"&
get也可以有body,协议中只说了服务器无需关心get的body(默许了可以带),但并未明文禁止携带,评论中也有同学提到elasticsearch的栗子
post的语义,幂等差异,我觉得已经超出了协议或者提主想要的抓包的范畴
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
前面对restful的概念都说的很清楚了,我这里补充一点,下面是个get请求, 我这里就懒得抓包了,直接在chrome的console中拷贝来的,你说的从报文的方式分析, 我可以直接告诉你本质区别
我觉得get和post的本质区别应该是参数放在哪里的区别,
get是放在header中的(所以长度有限制,是浏览器对url长度的限制),post是放在body中的(长度没有限制),
如果你问我header和body有什么区别,我也只能呵呵了(建议自己抓包看),
都是tcp数据流,header和body是 两个 /r/n
Remote Address:222.186.132.183:80
Request URL:http://qiniu-/bb.png?imageView2/1/w/100/h/100
Request Method:GET
Status Code:200 OK
Response Headers
view source
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Access-Control-Max-Age:2592000
Cache-Control:public, max-age=
Connection:keep-alive
Content-Length:15509
Content-Type:image/png
Date:Wed, 29 Apr :08 GMT
ETag:"ALCDKnR1WgNfUxiMBRwEuXoe76OQ"
Server:nginx/1.4.4
X-Log:mc.g/404;mc.g:2;RS:2;mc.s;DC/404;FOPDC/404;FOPAGENT;IMAGE:239;FOPAGENT:240;FOPAGENT;IMAGE:239;FOPAGENT:240;FOPG:241;FOPAGENT;IO:249
X-Qiniu-Zone:0
X-Reqid:YVQAABBhtnn3adkT
X-Via:1.1 tzh57:8110 (Cdn Cache Server V2.0), 1.1 zhenjiang157:10 (Cdn Cache Server V2.0)
X-Whom:nb263
Request Headers
view source
Accept:image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:qiniu-
Pragma:no-cache
RA-Sid:DE49CAE2-718-ab4eeb-10884d
RA-Ver:2.10.0
Referer:http://jssdk.demo.qiniu.io/
User-Agent:Mozilla/5.0 (M Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Query String Parameters
view source
view URL encoded
imageView2/1/w/100/h/100:
Remote Address:183.136.139.10:80
Request URL:/
Request Method:POST
Status Code:200 OK
Response Headers
view source
Access-Control-Allow-Headers:X-File-Name, X-File-Type, X-File-Size
Access-Control-Allow-Methods:OPTIONS, HEAD, POST
Access-Control-Allow-Origin:*
Access-Control-Max-Age:2592000
Cache-Control:no-store, no-cache, must-revalidate
Connection:keep-alive
Content-Length:54
Content-Type:application/json
Date:Wed, 29 Apr :08 GMT
Pragma:no-cache
Server:nginx/1.4.4
X-Content-Type-Options:nosniff
X-Log:s.s.put.s.put.tr:5;s.put.tw:1;s.put.tr:4;s.s.put.tw:1;s.put.tr:5;s.PFDS:12;PFDS:13;PFDS:14;rdb.g/DBD/404;DBG/404;v4.exist:1/Drs12_9.qtbl.ins:2;mc.s;RS:3;rs.put:4;rs-upload.putFile:20;UP:27
X-Reqid:-zwAABHcpXL3adkT
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:620773
Content-Type:multipart/form- boundary=----WebKitFormBoundaryb5PfXDf4M1oCl5QM
Origin:http://jssdk.demo.qiniu.io
Pragma:no-cache
RA-Sid:DE49CAE2-718-ab4eeb-10884d
RA-Ver:2.10.0
Referer:http://jssdk.demo.qiniu.io/
User-Agent:Mozilla/5.0 (M Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Request Payload
------WebKitFormBoundaryb5PfXDf4M1oCl5QM
Content-Disposition: form- name="name"
------WebKitFormBoundaryb5PfXDf4M1oCl5QM
Content-Disposition: form- name="chunk"
------WebKitFormBoundaryb5PfXDf4M1oCl5QM
Content-Disposition: form- name="chunks"
------WebKitFormBoundaryb5PfXDf4M1oCl5QM
Content-Disposition: form- name="key"
------WebKitFormBoundaryb5PfXDf4M1oCl5QM
Content-Disposition: form- name="token"
0MLvWPnyya1WtPnXFy9KLyGHyFPNdZceomLVk0c9:d5M0tc6IYvvXMsWeqXN-_cJHEd0=:eyJzY29wZSI6InFpbml1LXBsdXBsb2FkIiwiZGVhZGxpbmUiOjE0MzAyOTQ0NDd9
------WebKitFormBoundaryb5PfXDf4M1oCl5QM
Content-Disposition: form- name="file"; filename="bb.png"
Content-Type: image/png
------WebKitFormBoundaryb5PfXDf4M1oCl5QM--
我觉得get和post的本质区别应该是参数放在哪里的区别,
get是放在header中的(所以长度有限制,是浏览器对url长度的限制),post是放在body中的(长度没有限制),
我这里贴的post是form-data 格式的,
有很多人会把post中的 x-www-form-urlencoded方式
和get 请求搞混,因为在服务端,好多语言框架对这两种请求获取参数的方式差不多
下面可以看一下 x-www-form-urlencoded
Content-Type: application/x-www-form-charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
讲的很清楚
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
题主提出这个问题应当是因为现在很多人使用GET来提交数据。从协议规范上来说这是一种取巧(或者说偷懒)的办法。因为GET原本是被设计用于获取数据的(HTTP协议中指出:GET和HEAD方法仅仅应该获取资源而不是执行动作)。但是GET的使用比较简单,使用POST需要在网页上创建表单,相对而言比较麻烦,所以大家就这么做了。
举个不太恰当的例子就是:POST是笔,被设计用来写字的。GET是口红,不是被设计用来写字的,但是有时候也被用来写字了。
但是仍然需要指出,使用GET代替POST并不是一个好习惯。因为GET操作可能会被一些设计粗糙的系统不正确地缓存,这会导致相应的请求没有被执行。同时,使用GET代替POST也容易产生XSS问题。
从HTTP协议规范上来说,xelz已经回答了。HTTP协议没有明确说明GET不允许带消息体(我简单查阅了一下似乎是没有,如有错误请指出),但是也没有定义GET消息体的任何功用。所以目前Web服务器接收到带有消息体的GET请求也能够正确地处理,但是消息体会被忽略。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这可能多多少少有RESTful的功劳,POST/DELETE/PUT/GET和数据操作对应起来,网上资料很多。
POST /uri 创建
DELETE /uri/xxx 删除
PUT /uri/xxx 更新或创建
GET /uri/xxx 查看
另外GET的话, URL是有长度限制的,(虽然很长,但是有时候不一定足够)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以看看这篇文章
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
推荐你看2篇文章,第一个比第二个通俗一些,第二个在后面讲了一些http协议的东西,其实他们的区别也就这些了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
get 一万遍 得到的都是同一个东西 post就不一样了 这个就是等幂和非等幂
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
GET获取与POST给予的关系
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
本质区别是数据放在哪里。
性质性的区别是幂等。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我的理解:
POST提交是隐式。(提交的参数对流量者是隐藏的)
GET提交是显式。(提交的参数包含在URL中,是可见的)
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果非得说不同的话,那就是浏览器处理这两种协议的方式不同,GET想刷新几次刷新几次,POST刷新就会提示“重复提交表单”,非要给这两个扣个帽子,那就应该是根据流传下来的习惯,这两个东西的“幂等性”不同。
至于后台处理POST和GET有没有不同,那就不好说了。以前貌似试过,jsp的servlet.getParameter取不到POST放在URL的参数。我不确定。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
有没有BODY部分,也就是说除了URL和头部,有没有信息体是根本区别。所以GET不能用来从客户端传送大量数据到服务器端。因为GET所有的参数都在URL(浏览器地址栏)里。
HTTP是应用层协议,一般基于TCP协议的可靠数据流。所以分析HTTP不必分析报文和数据包。
GET /index.html?name=leo HTTP/1.1
Accept: / &这是头部&
POST方法:
POST /index.html HTTP/1.1
Content-Length: 10
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
抓包的时候可以发现:
get一般就1到2个tcp包(信息头和数据都在一起,如果信息头内容很多就会产生2个或者多个包),而post至少2个包(第一个包是信息头,第二个才是数据)。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
哎,你真是天天没事干,这种问题搞清楚了对开发来说又有什么帮助啊?程序是用来解决问题的,你是纯搞理论研究的,反正我是无知者无畏,it知识是学不完的,能会用一些都不错了,死抠这个你可以抠十年,最后抠出来了还没有什么应用场景骚年
该答案已被忽略,原因:答非所问,不符合答题要求
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:本帖子已过去太久远了,不再提供回复功能。jsp中form表单的post提交方式是用什么编码
请教了度婶,谷姐,无果,还是来请教下oschina。
如题,现在我已经知道get方式提交时默认用的是iso-8859-1的编码方式,可以通过修改tomcat_home/conf目录下的
server.xml 文件中的Connector节点里面的URIEncoding的值来修改get提交时的编码方式。
但是如果我用的是post方式呢?是依据什么来编码被提交参数的?(针对tomcat6以上的版本)
非常感谢。
有点说明,感觉看的不是蛮懂。
看来只能自言自语了,刚测试了下,可以排除post的编码和
&meta http-equiv=&content-type& content=&text/charset=xxx&& 中 chartset有关。
我刚用的charset=gb2312,提交&春节&两个字,发现提交给后台的是:name=%E6%98%A5%E8%8A%82 , &这对应的是utf-8编
码,因为&春节&的gb2312对应的值是:%b4%ba%bd%da&
一般POST方式最好处理,在获取参数前用 request.setCharacterEncoding(&UTF-8&) 就全解决了
完整的处理方法(同时支持GET和POST的自动编码处理)看 oschina 的
类的第 419 行的 RequestProxy 这个类。
建议页面都用UTF-8的方式来编码,可以省很多事。
引用来自#5楼“红薯”的帖子
建议页面都用UTF-8的方式来编码,可以省很多事。
谢谢老大,我用的是utf-8,只是有些东西不知所以然,所以来问问。
表单提交”春节&,用ie的调试工具查看,都是
%E6%98%A5%E8%8A%82,因此,我认为表单提交数据的时候,都是使用utf-8编码}

我要回帖

更多关于 get和post区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信