表单参数与URL参数的优先级

来源:互联网 发布:淘宝助理 顺丰模板 编辑:程序博客网 时间:2024/05/17 07:17

众所周知,http提交请求的参数方式有两种:post和get,有时候我们会遇到两种方式并存的情况如:

http://xxx.html?id=12&userName=aaa,

<form action="xxx.html" method="post">

<input type=text name="id" value="13"/>

<input type=text name="userName" value="bbb"/>

<input type=submit name=submit1 />

</form>

如果此时通过form表单方式提交,但是url后面又同时带了?id=12&userName=aaa

此时我们服务器端获取到的参数值会是什么?request.getParameter(id) ,request.getParameter(name)

id=13, userName="bbb" ?

答案为:id=12, userName="aaa" 

因为http协议默认先以get方式获取数据,无论是否以哪种方式发起的,总是get方式优先,即通过get方式获取到了数据就不会再去通过post方式获取一遍,如果get方式获取不到,再以post方式获取。

所以虽然是点击提交按钮触发的form表单方式发起的请求,但是http协议默认先以get方式获取数据,已经得到了结果。

如果url的?id=12,后面不带userName参数,则此时userName的值是从表单获取到的,此时的两个值就为:id=12,userName="bbb"