<form>分get和post提交,其中enctype的不同又会影响后台接收的数据方式。在这里做一个总结。
后台获取参数无非两种方式:
1、request.getParameterMap()
2、request.getInputStream()
但是根据提交方式的不同,两种方式有时可行有时又会出现问题。
Post提交
用这种方法提交的表单,数据将以数据块的形式提交到服务器,表单数据不会出现在URL中,所以用这种方式提交的表单数据是安全的。如果表单数据中包含类似于密码等数据,建议使用post方法
后台获取参数post提交又分以下enctype几种情况
enctype值 | 获取方式 | 是否可以获取到 |
---|---|---|
application/x-www-form-urlencoded | getParameterMap() | 是 |
getInputStream() | 是 | |
multipart/form-data | getParameterMap() | 否 |
getInputStream() | 是 | |
text/plain | getParameterMap() | 否 |
getInputStream() | 是 |
注意:post提交是以流的形式读取数据,所以当getParameterMap和getInputStream都可以读取时,它们是相斥的,因为流只能读一次。
Get提交
这是发送表单数据的默认方法,这种方法会以 “?name1=value1&name2=value2”的形式,将表单数据附加到URL的后面,提交到服务器处理,这种方法安全性当然不如post方法,因为表单数据会暴露在URL中,但是它的处理效率要比post方法高。如果表单中的数据没什么隐私数据,建议使用get方法,它的效率较高
enctype值 | 获取方式 | 是否可以获取到 |
---|---|---|
application/x-www-form-urlencoded | getParameterMap() | 是 |
getInputStream() | 否 | |
multipart/form-data | getParameterMap() | 是 |
getInputStream() | 否 | |
text/plain | getParameterMap() | 是 |
getInputStream() | 否 |