Поскольку методы сервлета определяются в интерфейсе, а интерфейсы не могут определять конструкторы, инициализация сервлета полностью осуществляется в методе init. Процессор сервлетов непременно вызывает метод init после того, как сервлет разработан, и прежде, чем обработан первый запрос. Методу init, согласно определению интерфейса Servlet, передается объект ServletConfig, который может быть использован для получения параметров инициализации. Между интерфейсами SevletConfig и ServletContext имеют место отличия, которые нужно учитывать.
SevletConfig — объекты, использующие этот интерфейс, содержат информацию, которая требуется во время инициализации сервлета. Причина частых таинственных ошибок времени выполнения в сервлете заключается в том, что перед вызовом метода initO не было вызова метода super.init().
Servl etContext — объекты, использующие этот интерфейс, позволяют сервлету находить информацию о процессоре сервлетов, в котором данный сервлет выполняется, и о его окружении. Вы можете получить интерфейс Servl etContext из объекта Servl etConfig.
Все процессоры сервлетов предусматривают определение параметров инициализации, которые должны быть переданы данному сервлету. Соглашения о том, каким образом администратор сервера устанавливает эти параметры, могут быть различными для разных процессоров, но основная идея остается неизменной. Будем надеяться, что количество производителей, использующих стандартный подход Sun с применением XML, будет увеличиваться.
Имя параметра связывается с текстовым значением. Программисты, знакомые с апплетами Java, могут заметить здесь аналогию с тем, как контейнер апплетов (браузер) передает именованные параметры апплету. Три наиболее распространенных метода объекта Servl etConfig приведены в табл. А1.
Таблица А.1. Методы объекта ServletConfig
|
Тип возвращаемого значения |
Метод |
Описание | |||
| String | getlnitParameter (String name) | Этот метод возвращает строку String, соответствующую имени параметра (Stri ng name), либо null , если такого параметра не обнаружено | |||
| Enumeration | getInitParameterNames() | Этот метод возвращает перечисление Enumeration имен всех параметров | |||
| ServletContext | getServletContext() | Этот метод получает интерфейс ServletContext, в котором выполняется сервлет |
|
Тип возвращаемого значения |
Метод |
Описание |
| void | init (ServletConfig config) | Вызывается контейнером сервлетов до того, как начнется обработка запроса пользователя. Не забудьте о вызове метода super.init(config) |
| void | destroy( ) | Вызывается контейнером сервлетов для указания сервлету, что он должен быть удален |
| ServletConfig | getServletConfig() | Возвращает объект ServletConfig, который содержит параметры для инициализации и запуска сервлета. Обратите внимание: этот объект буден равен null , если вы забудете вызвать метод super, init (config) в методе init |
| Srting | getServletlnfo() | Необязательный метод, который возвращает информацию о сервлете, например данные о его авторе, номер версии и сведения об авторских правах |
| void | service(ServletRequestreq, ServletResponseres) | Вызывается контейнером сервлетов для того, чтобы сервлет получил возможность ответить на запрос |