相信很多人都和我有一样的困惑,ServletRequest中getParameter()方法到底取的是什么参数,这些参数又是怎么放进去的,本文简单的回答一下该问题:
首先话不多说,我们来看一下该方法的官方说明:
Returns the value of a request parameter as a String, or null if the parameter does not exist. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data
.
其实核心的一句话就是query string or posted form data,认真三遍这几个单词,此时大家是否已恍然大悟,也就是说getParameter()方法取的是query string 和 posted form data中的数据,那么query string 和 posted form data又是指的啥呢?query string就是get请求中url的?后面的参数,posted form data就是post请求中的body数据,哈哈哈,到现在是不是觉得很有点感觉了;大家平时都是用的ajax请求,无论是get还是post,我们的请求参数都是可以放在data里的,只不过ajax会判断请求类别,如果是get请求的话,ajax会把data里的值给拼接到url的后面。
好了,上面说了getParameter()方法取的是什么数据的问题,那么这些数据又是怎么放进去的呢?我相信每个爱思考的人都会想过这个问题,可能百思不得其解。那我来告诉大家这些参数是tomcat放进去的,是不是有点小懵逼,tomcat又是怎么放进去的呢,大家都知道tomcat是个容器,我们的http请求是会先经过tomcat进行处理的,它会分析http请求中的请求行、请求头、数据三部分然后分别将其放到对应的位置中,这样我们后台就可以根据getParameter(),getHeader()等方法进行取值了。好了,我相信很多人都不知道http的请求消息格式是什么样子的,比如我上面说的请求行、请求头、数据这三部分大家只是印象中好像有那么几个概念,但是并不知道这是http协议中所规定的,所以我建议大家好好去了解一下http协议,这样才会对系统的交互流程有着最本质的了解。
看到这,大家可能会想问tomcat具体是怎么处理的呢,哈哈哈,这个就需要去看tomcat的源码了。