Это из книги Professional Java For Web.
При первом вызове getParameter, getParameterMap, getParameterNames или getParameterValues для объекта запроса веб-контейнер определяет, содержит ли запрос пост-переменные, и если да, то считывает и анализирует эти пост-переменные, получая InputStream запроса. InputStream запроса может быть прочитан только один раз. Если вы вызываете getInputStream или getReader для запроса, содержащего пост-переменные, а затем пытаетесь получить параметры в этом запросе, попытка получить параметры приводит к исключению IllegalStateException.
И это мой тестовый код:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("name");
System.out.println(name);
ServletInputStream inputStream = req.getInputStream();
int read = inputStream.read();
System.out.println(read);
}
И когда я нажимаю на сервлет с помощью ?name=test, я получаю:
test
-1
Есть ли что-то, что мне не хватает? Как я могу воспроизвести это исключение?