Почему ServletConfig obj передается в init() GenericServlet, когда класс реализует интерфейс?

#java #jakarta-ee #servlets

#java #джакарта-ee #сервлеты

Вопрос:

GenericServlet реализует ServletConfig интерфейс, который означает, что все функции интерфейса могут быть вызваны из init() функции GenericServlet . Учитывая этот контекст, почему контейнер сервлета отправляет ServletConfig объект в init() метод? Я также хотел бы знать ServletConfig , отличается ли объект, который передается GenericServlet.init(ServletConfig) , от объекта GenericServlet.

С уважением, Рави

Ответ №1:

GenericServlet Реализует ServletConfig методы, просто делегируя объект конфигурации, переданный методу init . Таким образом, он реализует ServletConfig просто для удобства — затем он просто делегирует. Итак, вместо вызова getServletConfig().getInitParameter() вы можете вызвать getInitParameter()

Комментарии:

1. Спасибо Божо. Если GenericServlet реализует ServletConfig , обычно будет потребитель, который знает GenericServlet только как объект ServletConfig . Поскольку разработчики сервлетов не рассматривают объекты GenericServlet как объекты ServletConfig, я предположил, что некоторый модуль контейнера сервлета имеет ссылку ServletConfig на GenericServlet. Верна ли какая-либо часть моих предположений?

2. контейнер сервлета имеет другую реализацию ServletConfig, которая является фактической используемой реализацией. он просто передает его универсальному сервлету