Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 408
Ильдар Шаукатович Хабибуллин
Интерфейс
Каждый объект типа ServletConfig содержит имя сервлета, извлеченное из элемента <servlet-name> конфигурационного файла, набор начальных параметров, взятых из элементов <init-param>, и контекст сервлета в виде объекта типа ServletContext. Эти конфигурационные параметры сервлет может получить методами
public String getServletName(); public Enumeration getInitParameterNames(); public String getInitParameter(String name); public ServletContext getServletContext();
описанными в интерфейсе ServletConfig.
Начальные параметры записываются в конфигурационный файл web.xml во время установки сервлета вручную или с помощью утилиты установки. Механизм задания и чтения начальных параметров сервлета очень похож на механизм определения параметров апплета, записываемых в теги <param> и читаемых методами getParameter() апплета.
В листинге 26.2 приведен простейший сервлет, отправляющий клиенту свое имя и начальные параметры.
Листинг 26.2. Начальные параметры сервлета
package myservlets; import java.io.*;
import java.util.*;import javax.servlet.*; public class InfoServlet extends GenericServlet{ private ServletConfig sc;
@Override
public void init(ServletConfig conf) throws ServletException{ super.init(conf); sc = conf; }
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException{
resp.setContentType("text/html; charset=windows-1251");
PrintWriter pw = resp.getWriter();
pw.println("<html><head>");
pw.println("^^^^араметры сервлета</title>"); pw.println(,,</head><body><h2>Сведения о сервлете<^2>"); pw.println(,,Имя сервлета — " + sc.getServletName() + "<br>");
pw.println(,,Параметры сервлета: <br>");
Enumeration names = sc.getInitParameterNames();
while (names.hasMoreElements()){
String name = (String)names.nextElement(); pw.print(name + ": ");
pw.println(sc.getInitParameter(name) + "<br>");
}
pw.println("</body></html>"); pw.flush(); pw.close();
}
public void destroy(){ sc = null;
}
}
Полностью код листинга 26.2 будет подробно разъяснен позднее, а пока запомните два правила:
□ переопределяя метод init(ServletConfig), вызывайте метод init (ServletConfig) суперкласса;
□ кодировку ответа устанавливайте методом setContentType ()
Код листинга 26.2 компилируется обычным образом, а затем полученный файл с сервлетом InfoServlet. class устанавливается в контейнер. Процедура установки выполняется соответствующей утилитой, входящей в состав контейнера сервлетов или сервера приложений, make-файлом или ant-файлом. Часто достаточно поместить приложение в каталог, называемый webapps, autodeploy, или как-нибудь еще в зависимости от сервера приложений. По окончании процедуры установки сервлет можно вызвать из браузера, набрав в нем строку адреса вида: