form表单 get请求参数传递问题

今天在使用form表单用get请求时,发现后台无法接受到url ?后面传递过来的参数,

开始一直以为是我的参数名称有误,后面发现并不是,后台使用实体映射接受或者request.getparameter()都无法接受到参数

但是改为使用post方式提交表单,就能接受到

后面网上看到一篇博客有介绍原因:如下

经常使用表单,一直使用的都是POST方式,POST将数据封装到请求体中,相对于GET安全一点;而POST处理中文编码问题也比GET简单(GET需要将URL编码,后台接受到后还需要解码)。今天我想要使用GET方式提交表单,却遇到了参数丢失的问题(姑且这样称呼这个问题吧),并不是GET方式表单提交的数据就会丢失,而是自己对表单理解的还不到位,使用错误。

一个GET方式提交的表单:

<form action="${pageContext.request.contextPath }/myServlet?name=lz" method="GET">
  <input type="text" name="password"/>
  <input type="submit" value="提交"/>
</form>

重点在于?号后面的name参数,我想当然的以为password的值会最加到后面,就如:

http://localhost:8888/11/myServlet?name=lz&password=123

但是事实上,真正的URL为:

http://localhost:8888/11/myServlet?password=123

没错,完全不关?号后面是否有值,直接将password追加到?号后面,所以我们在后台想要得到这个name的值,当然就得不到了。

而我们常用的POST方式会怎样呢?

将method改为POST之后,再次提交,可以发现提交的URL:

http://localhost:8888/11/myServlet?name=lz

而password参数封装在请求体中传给后台,所以后台既可以得到name的值,也可以得到password的值,都没有问题。

我们姑且将追加在?后面的参数称之为查询字符串,而将写在input中的值称之为表单数据。

注意:查询字符串不能使用GET方式的表单进行提交,想要提交可以使用隐藏域的方式(作为表单数据),而POST没有问题;表单数据不论使用哪种方式提交都是可以正确提交到后台的。

转自:https://www.cnblogs.com/lz2017/p/7800114.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值