Класс ServletContext

Сервлет живет и функционирует в пределах процесса сервера. Сервлет может получать информацию о своем окружении в различное время. Информация о сервере доступна в любое время, кроме этого, любой запрос может содержать дополнительную специфическую информацию.

Конфигурация сервлета ServletConfig

Интерфейс javax.servlet.ServletConfig используется для передачи конфигурационной информации сервлету. Каждый сервлет имеет свой собственный объект ServletConfig, за создание экземпляра которого отвечает контейнер сервлетов. Для установки параметров конфигурации сервлета необходимо использовать теги <init-param>, <param-name>, <param-value> в дескрипторе приложения web.xml. Следующий пример описывает сервлет customer, имеющего версию 2.3.123.

<servlet>
   <servlet-name>customer</servlet-name>
   <servlet-class>common.servlets.Customers</servlet-class>
   <init-param>
      <param-name>version</param-name> 
      <param-value>2.3.123</param-value> 
   </init-param>
</servlet>

В следующем коде на этапе инициализации сервлета в консоль выводится информация о версии сервлета :

public void init(ServletConfig config) 
{ 
    System.out.println ("Версия сервлета : " + config.getInitParameter("version")); 
} 

Информация о конфигурации передается сервлету при помощи параметра ServletConfig метода init(). Параметры инициализации сервлета доступны через метод getInitParameterNames().

Пример сервлета с использованием ServletConfig для чтения параметров настройки представлен на странице Пример сервлета, hello!

Интерфейс ServletConfig включает следующие методы, имена которых говорят сами за себя и составляют суть интерфейса javax.servlet.ServletConfig :

  • public String getServletName()
  • public ServletContext getServletContext()
  • public String getInitParameter(String name)
  • public java.util.Enumeration getInitParameterNames()

Особый интерес представляет метод getServletContext(), возвращающий ссылку на контекст сервлета.

Контекст сервлета ServletContext

Информация о контексте сервера доступна через объект ServletContext. Сервлет может получить этот объект, вызывая метод getServletContext() объекта ServletConfig. Необходимо помнить, что этот объект передается сервлету во время инициализации в методе init().

ServletContext - это интерфейс, определяющий доступ к следующим полезнейшим функциям :

public Object getAttribute(String name)
public java.util.Enumeration getAttributeNames()
public void setAttribute(String name, Object object)
public void removeAttribute(String name)

Четыре метода для работы с аттрибутами. Роль аттрибутов выполняет любой объект любого класса. Цель данных функций - пересылать между несвязанными друг с другом сервлетами разные объекты.

Доступ к параметрам, с которыми был запущен сервер, можно получить используя следующие функции :

public String getInitParameter(String name)
public java.util.Enumeration getInitParameterNames()

Эти функции открывают доступ к таким параметрам, как имя хоста, порт и прочие полезности.

Интерфейс ServletContext определяет несколько методов, представленные в таблице:

getAttribute () Гибкий способ получения информации о сервере через пары атрибутов имя/значение. Зависит от сервера.
GetMimeType () Возвращает тип MIME данного файла.
getRealPath () Этот метод преобразует относительный или виртуальный путь в новый путь относительно месторасположения корня HTML-документов сервера.
getServerInfo () Возвращает имя и версию сетевой службы, в которой исполняется сервлет.
getServlet () Возвращает объект Servlet указанного имени. Полезен при доступе к службам других сервлетов.
getServletNames () Возвращает список имен сервлетов, доступных в текущем пространстве имен.
log () Записывает информацию в файл регистрации сервлета. Имя файла регистрации и его формат зависят от сервера.

Следующий пример показывает, как сервлет использует Web-сервер для записи сообщения в свой log-файл во время инициализации:

import java.io.*;  
import javax.servlet.*;  
public HelloWorld implements Servlet  
{  
    private ServletConfig config;  
    public void init (ServletConfig config) throws ServletException  
    {  
        this.config = config;  
        ServletContext sc = config.getServletContext();  
        sc.log( "Started OK!" );  
    }  
}  
  Рейтинг@Mail.ru