ср, 11 дек. 2019 г. в 13:06, Behrang Saeedzadeh <behran...@gmail.com>: > > Thanks Andre for explaining it much better than I did. > > I posted this to Jakarta EE's mailing list too: > https://www.eclipse.org/lists/jakarta.ee-community/msg01477.html > > I think at least the JavaDocs comments and the spec need minor amendments > to document this expected behaviour clearly.
javax.servlet.ServletRequest#getInputStream() and getParameter() methods address different use cases. It is rather unusual to try calling getInputStream() when the Content-Type of the request is the one handled by parameter parsing. It is possible to use both getParameter() and getInputStream() if request body has content-type that is not processed by parameter parsing. In this case getParameter() returns the parameters parsed from the query string of the request line and does not process the body. E.g. in Tomcat Manager web application it is possible to send a WAR file in the body of a PUT request. The context path for the uploaded web application is specified by a parameter in the request URL. Both getParameter() and getInputStream() are used here. http://tomcat.apache.org/tomcat-9.0-doc/manager-howto.html#Deploy_A_New_Application_Archive_(WAR)_Remotely I think that changing the method getInputStream() to throw an IllegalStateException (e.g. as a vendor-specific option) may help developers to detect their programming errors, but does not address any real use case. On the good side, it also means that it does not break any real use case. Best regards, Konstantin Kolinko --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org