表单中的method为get和post的解读

解读

form表单中的method方法,其值get/post,对应的http协议中的GET和POST传送方法。即指明的是http协议传送请求报文的方式。

区别:

1、请求方式的语义

GET意指得到资源,是要从服务器上获取资源文件,我们在地址栏输入网址就是一种GET方式的http请求,服务器响应返回给客户端html、css、js、img...等资源。

而POST意指传输,是发送数据给服务器,由服务器获取到数据后,执行后续的业务操作(比如查询数据库...),POST不侧重返回资源给客户端。

2、请求的表现形式。

表单中使用GET方式时,参数都会被追加到action的路径后面,以明文显示,如ManagingKnowledge/main.jsp?fileName=test.md&fileType=.docx

而使用POST的方式,参数都被写在了请求报文的请求头部中,随着请求一起发送到服务器。

3、请求的安全性分析。

很明显,GET方式传输过程中,数据都在url中显示了,那么在传输的过程中就有可能被别人监听请求url或者截取http数据包,这样你的数据(用户名、密码)就被别人给窃取了,所以不安全。像代理服务器等都会把请求url记录到日志中,这样他人就能查看到了。

而POST方式提交的数据,如果别人监听你的请求url是得不到你的数据的,但如果截取了你的数据包,那么你的数据同样还是可以被别人窃取,因此,也是不安全的。

安全是相对性而言,GET的数据在地址栏就显示了,而POST的数据,其实在浏览器的NetWork中监听请求数据包,也可以查看到你的数据。

如果想安全传输数据的话,应该对数据先进行加密处理,然后发送出去。如用户的密码,用RSA加密后存储到数据库中,数据库不应该保存用户的明文密码。(一系列加密技术)或者是用SSL协议,加入secure layer层。

4、传输的数据量。

GET方式由于是地址追加方式,数据量受URL长度限制。

而POST方式可以传输大量数据,都是放在http报文中。

服务器端取出form的数据

表单中的input,排除掉style="display:none;" 或者disabled="disabled" 的input不能传输值到服务器,其余的input,只要设置了name,name其value属性的值都可以传输到服务器中被接收。

服务器接收

String input_value = request.getParament(String name); 就可以获取表单传来的值了。


柒叶
409 声望43 粉丝