In Mikalai notes under getParameter(String name) method it says: If the parameter data was sent in the request body, such as occurs with an HTTP POST request, then reading the body directly via getInputStream() or getReader() can interfere with the execution of this method.
The following line is from the servlet API documentation
According to the API getReader()
Retrieves the body of the request as character data using a BufferedReader. The reader translates the character data according to the character encoding used on the body. Either this method or getInputStream() may be called to read the body, not both.
and for getInputStream()
Retrieves the body of the request as binary data using a ServletInputStream. Either this method or getReader() may be called to read the body, not both.
In case the parameters are sent using a POST request i.e as part of the request body when you use getParameter() along with getReader()/getInputStream() then you might not get the expected result this is what it means i am not quite sure about the exact reason, the API also states that getReader() and getInputStream() cannot not used simultaneously to read the request body