@ noname, @darren хорошо ответила на ваш вопрос, но ваш вопрос к нему говорит о том, что вам нужно объяснить еще более фундаментальные вопросы. Итак ...
request
- это объект класса, который реализует HttpServletRequest
. И когда мы смотрим на объявление HttpServletRequest , мы видим:
public interface HttpServletRequest extends ServletRequest {
Заявление о том, что класс implements
интерфейс или один интерфейс extends
другой может быть с пользой выражен в более человеческих терминах как IS A . Таким образом, request
является объектом класса, который ЕСТЬ HttpServletRequest
, который ЕСТЬ ServletRequest
. Вскипела:
request
IS A ServletRequest
.
Это означает, что для вашего request
объекта могут быть вызваны любые методы ServletRequest
, а объявление ServletRequest включает в себя:
public String getParameter(String name);
И вот почему мы можем позвонить request.getParameter(someString)
.
Вы говорите:
К какому классу они относятся?
методы? я должен это знать
информация, чтобы иметь возможность кодировать и
уметь думать.
Но это не так. Вы не должны знать, какой именно класс содержит реализацию метода, и вы поймете, что это сила. Это абстракция, а абстракция лежит в основе программирования; это где вся сила. Метод doPost()
, который вы опубликовали, может принять ANY HttpServletRequest
в качестве параметра без , точно зная, какая реализация была передана - все, что он знает, это то, что все, что передано, будет соблюдать HttpServletRequest
интерфейс. Один раз он может быть вызван с запросом класса из библиотеки; в следующий раз он может быть вызван по другому запросу из класса, который вы написали сами. Вот почему doPost()
может использоваться в разных контекстах; вот что делает его мощным.