Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:JAVA. Серверные приложения
.pdf
Часть 3 Серверные Java-компоненты Servlet 141
ный набор функций для обеспечения секретности, предоставляемый
стандартными пакетами JDK java.security и java.security.acl, обеспечивает разработчика практически всем необходимым. Кроме того, «песочница» имеет специальный метод фильтрования информации, встроенный в JVM, также обеспечивает некоторый уровень безопасности. А набор API JDBC предоставляет возможность создавать серверные
приложения, работающие с базами данных.
Некоторые Web-серверы — Sun's Java Web Server, — реализован-
ные на Java, поставляются со встроенными servlet engine, другие —
IBM HTTP Server, Microsoft Интернет Information Server — требуют
специальной установки servlet движка.
Servlets значительно более эффективны в работе, мощнее и легче в
использовании, чем традиционные CGI-скрипты.
Эффективность. Традиционные CGI-скрипты, создают новый процесс
для каждого нового процесса, обрабатывающего HTTP-запрос. Servlets
являются Java-потоками, а не потоками операционной системы, как
традиционные CGI-приложения, исполняющимися в Java Virtual Machine, где каждый запрос, обрабатываемый как отдельный поток, может
еще и управляться. Обычные CGI-скрипты загружают одну копию для
каждого запроса в память, servlets загружают в память все потоки по
обработке запросов в память, но при этом используется один servlet
class. Servlets имеют больше возможностей, чем обычные CGI-скрипты,
по оптимизации, работе с потоками и т. д.
Мощность. Использование набора JDK API позволяет создавать бы-
стрые и гибкие приложения. Servlets позволяют сделать несколько вещей, недоступных обычному CGI-скрипту. Одна из них, servlets, может
управлять Web-сервером (обычные CGI-программы этого не могут).
Переносимость. Servlets написаны на языке Java и могут использо-
вать, кроме собственного API, весь спектр API для Java, разработанный
как фирмой SUN, так и сторонними поставщиками. Платформонезависимость Java позволяет использовать servlets на разных Web-серверах.
Обработчик Servlets может быть легко добавлен как обычный надстраиваемый элемент на практически любой Web-сервер.
Бесплатность. На настоящий момент фирма SUN реализует несколь-
ко наборов API, содержащих классы по созданию servlet, совсем бесплатно. А некоторые свободнораспространяемые Web-серверы, порой
не уступающие своей функциональностью коммерческим серверам, уже
имеют встроенную поддержку servlet. Прекрасным примером может
служить один из первых Web-серверов — Apache, после небольших изменений произведенных фирмой IBM, ставший HTTP-сервером с поддержкой «Голубого Гиганта» по всему миру.
Переносимость. При создании servlet используются стандартные на-
боры API. Это значит, что servlet, написанный для одного Web-сервера,
можно без изменений перенести на любой другой Web-сервер, имеющий servlet engine. Servlet написаны с использованием языка Java, а
значит, работают везде, где существует JVM.
Удобство использования. Servlet имеет встроенные возможности об-
работки стандартных HTML-форм, считывания и установки системной
информации (headers), обрабатывая cookies, прослеживая сессии. Serv-

142 Часть 3 Серверные Java-компоненты Servlet
let загружаются только на Web-сервере и вызываются только при клиентском запросе, все остальное время servlet не занимает ресурсов ни
JVM, ни Web-сервера. После использования servlet освобождает системные ресурсы. Встроенная многопоточность не требует для выполнения запроса загрузки новой копии servlet.
На настоящий момент самой распространенной версией servlet API
является 2.1, хотя с появлением нового набора разработчика J2EE версии 1.3 стала распространяться обновленная версия servlet API 2.2.
Именно версия 2.1 будет использоваться в дальнейшем обзоре. Основным источником информации о серверных приложениях, использующих язык Java-servlet, служит официальный сайт компании SUN:
http://java.sun.com/products/servlet/.
Глава 18. Основные пакеты фирм SUN по работе с servlet
Java Servlet API — стандартный набор классов и интерфейсов по со-
зданию и обслуживанию servlet. Servlet API определяет стандартные
средства по обработке запросов и ответов посредством servlet. Java Servlet API представляет множество классов, сгруппированных в двух
основных пакетах — javax.servlet и javax.servlet.http. Последний предназначен непосредственно для работы с HTTP-протоколом. Кроме
HTTP-протокола, servlet поддерживает также широко распространенные почтовые протоколы POP и SMTP, а также протокол передачи
файлов FTP и пользовательских протоколов. Java Servlet API является
стандартным расширением JDK Java Extension API, который не является частью основного Java API, но доступен как добавочный. Пакеты
по работе с servlets поставляются фирмой SUN в нескольких разных
наборах разработчика (SDK), Java Server Development Kit API
(JSDK)V2.1, Java 2 Enterprice Edition (J2EE) и более старая версия Java
Web Servser Development Kit (JSWDK) 1.0.1.
Основные пакеты по работе с servlet находятся в jar-архивах, по-
ставляемых в месте, с каким-либо набором разработчика или в большом
пакете Java 2 Enterprise Edition. Именование архивов может быть различным для каждого набора. Как и об остальных продуктах, разработанных фирмой SUN, основным источником получения информации о
различных версиях servlet API остается официальный сайт фирмы
SUN. На сайте можно найти все спецификации и набор API, необходимый для создания sevlets. Свободно распространяемую версию, известную как JavaServer Web Development Kit (JSWDK), можно найти на
http: //java.sun.com/products/servlet/. Более поздняя версия, именуемая как Java Server Development Kit (JSDK).
Пакет javax.servlet содержит классы для создания servlets, независи-
мых от протоколов передачи. Servlets, сгенерированные из классов данного пакета, могут работать с различными протоколами передачи данных, например HTTP и FTP.
Пакет javax.servlet.http содержит классы, предназначенные для ге-
нерации servlet, работающих только по протоколу HTTP. В отличие от
стандартных servlet, в спецификации 2.1 указываются методы doGet() и
doPost(), заменяющие собой основной метод service().

Часть 3 Серверные Java-компоненты Servlet 143
Установка Servlet Development Kits зависит от того, в каком инстру-
ментарии находятся пакеты, содержащие servlet классы.
После установки какого-либо Development Kit, содержащего необхо-
димые архивы, обязательно правильно установить системную переменную CLASSPATH, для того чтобы компилятор javac смог правильно
определить местоположение классов, необходимых для создания servlet.
В каждом из поставляемых Development Kit имеется несколько jar-
архивов, которые необходимо прописать в переменную CLASSPATH.
Обычно в директории LIB каждого Developmet Kit содержатся jar-архивы servlet.jar, jspengine.jar или jsdk.jar, необходимые для дальнейшей
работы. С появлением других версий имена архивов могут различаться.
Поэтому необходимо будет свериться с поставляемой документацией.
Но имена пакетов практически не изменились, не считая совсем ранних
версий, где полное имя пакета начиналось с java.servlet, вместо принятого в настоящий момент javax.servlet.
Системная переменная, содержащая установленные jar-архивы, для
разных систем выглядит по-разному:
set CLASSPATH=.;servlet_dir/servlet.jar;servlet_dir /jsp.jar
Разделение аргументов в Windows-подобных системах осуществля-
ется через точку с запятой, в UNIX-подобных через двоеточие. Установка системной переменной CLASSPATH, для UNIX, реализовывается
оператором set env в командном файле. В системах Windows 95\98 прописывается специальная строка в файле autoexec.bat. Для Windows NT
выбирается Settings, затем указывается Control Panel, выбирается System, выбирается Environment, и заносятся соответствующие значения.
На настоящий момент существует уже новая спецификации servlet
номер 2.2, а с ожидаемым появлением в четвертом квартале 2001 года
новой версии основного JDK 1.4 можно ожидать и появление обновлений для API Enterprise Edition. В книге будет рассматриваться самая
популярная версия на настоящий момент 2.1, с которой работают как
WebSphere Studio, WebSphere Application Server,VisualAge for Java
версии 3.02, так и более новые версии.
После установки одного из средств разработки Development Kit, со-
держащего необходимые пакеты, можно воспользоваться архивами на
Web-сервере, способном работать с servlets. Большая часть поставляемых Web-серверов расширяется при помощи серверов приложений,
имеющих уже встроенные возможности по работе с servlets. Либо воспользоваться специальными надстройками (plug_in), распространяемыми различными производителями, обеспечивающими Web-сервер необходимыми ресурсами по работе с servlet.
Глава 19. Как работает servlet
Servlets реализует парадигму запрос/ответ, основанную на сообще-
ниях между клиентом и сервером. Servlet API представляет прекрасный набор для работы с объектами взаимоотношений между клиентом и

144 Часть 3 Серверные Java-компоненты Servlet
сервером, запросом (request) и ответом (response). Схема работы Servlet
представлена на рис. 3.1.
1. Клиент посылает запрос на сервер. Сам клиент не взаимодейству-
ет напрямую с servlet. Запрос не обязательно является HTTP-запросом,
т. е. HTML-страницей, servlet работает с любыми протоколами передачи
данных, даже созданных пользователем.
2. Сервер перенаправляет запрос на servlet. В момент формирования
запроса на сервере servlet-engine запускает копию servlet на выполнение. Servlet инициализирует параметры конфигурации, а затем в основной метод servlet передаются данные, полученные от клиента. Пока не
рассматриваются конкретно способы инициализации servlet, об инициализации сказано ниже. Используя набор API, сервер выделяет из запроса нужную информацию, на основе которой создает объект request.
Уже объект request перенаправляется в servlet. Роль сервера, неважно,
Web или Application Server, в данный момент сводится только к управлению и загрузке необходимого servlet.
3. Servlet формирует ответ и возвращает его на сервер. Формирова-
ние ответа происходит в два этапа. Сначала, при инициализации, servlet организует доступ к источникам данных. Затем, используя инициализационные данные и данные запроса, формируется объект ответа
response. Это динамически построенный ответ, обычно зависит от клиентского запроса. Каждый клиентский запрос servlet обрабатывает в
собственном потоке. Web-сервер формирует поток для каждого запроса.
Web-серверу без разницы, сколько обработчиков существует и сколько
надо, — тяжелое наследие CGI-скриптов. Servlet существует один, но
имеет много потоков. Каждый поток обрабатывает один запрос и отсылает один ответ вызывающему клиенту.
4. Сервер посылает ответ на запрос обратно клиенту. После обработ-
ки объекта request сервер должен только уничтожить экземпляр servlet, освободить занятые ресурсы. Поскольку servets полностью реализо-
Рис. 3.1. Приблизительная схема работы Servlet

Часть 3 Серверные Java-компоненты Servlet 145
ваны на языке Java, servlet полностью переносимые на любые платформы, для которых существует реализация Java Virtual Machine (JVM).
Необходимо также иметь в виду несколько моментов, связанных с JVM.
Во-первых, одна JVM ассоциирована только с одним Application Server.
Но при использовании виртуального хоста для каждого создается своя
Java машина. Во-вторых, только один servlet engine, работает только на
одной Java-машине. В случае клонирования Application Server, а значит, и клонирования JVM servlet, ассоциированные с одним клоном
JVM, отличаются от servlet ассоциированных другим клоном, даже если
физически это один и тот же servlet.
Как уже неоднократно упоминалось, servlet является многопотоко-
вым приложением. Каждый запрос обрабатывается в собственном потоке. Но иногда может потребоваться создавать servlet, чей метод service()
работает только в одном потоке. В принципе совместно используемые
данные можно синхронизировать, для этого используется ключевое слово synchronized, обеспечивающее синхронизацию полей или методов.
Однако для servlet существует более простое решение, а именно реализация интерфейса SingleThreadModel в создаваемом классе servlet.
public class SingleThreadServlet extends HttpServlet implements
SingleThreadModel {
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException { //Java êîä } }
Как и в обычном Java-приложении, все основные методы по обработ-
ке клиентского запроса должны полностью закончиться, прежде чем будет вызван метод уничтожения destroy(). Перед окончанием работы servlet необходимо убедиться, что все потоки, формирующие ответ, полностью завершены. Для управления длительностью сессии существуют
методы класса HttpSession. Методы setMaxinactiveInterval() и isNew()
позволяют в какой-то мере контролировать пользовательскую сессию.
Глава 20. Доступ к servlet
Обратиться к Servlet можно несколькими способами, в зависимости
от протокола передачи данных. Конкретный способ обращения к servlet
привязывается к специфике указания адреса данным протоколом передачи. Рассматриваемые способы являются в большей степени универсальными или наиболее распространенными на настоящий момент:
•
Указать необходимый servlet в URL. Указание URL servlet — са-
мый распространенный способ обращения к servlet, используемый
в клиент-серверных приложениях. Распространенность способа
связана в первую очередь с URL, имеющим единый формат для
всех протоколов передачи данных, предназначенных для работы в
Интернет. Формат адреса ресурса Интернета достаточно прост:
первым указывается протокол передачи, затем через двойной
слэш (//), доменное имя сервера, каталог размещения ресурса и,

146 Часть 3 Серверные Java-компоненты Servlet
наконец, èìÿ самого ресурса. http: //www.rrlabs.com/serv-
let/com.rrlabs.servletAcount.
Обязательными при таком доступе являются несколько параметров:
во-первых, все servlet размещаются в директории, называемой servlet
любого Application Server, во-вторых указывается полное имя servlet,
т. е. имя пакета, и имя класса, содержащего данный servlet. Ключевое
слово servlet указывает Web-серверу, что клиентский запрос направляется именно в servlet, а не в другой источник, такой, как HTML-страница или CGI-скрипт.
В HTML существует несколько способов обращения к ресурсам.
•
Всеми этими способами можно воспользоваться и для обращения к
servlet. Гиперссылки, «якоря» <A HREF> — все они обеспечивают
доступ к ресурсам. Распространение HTML обязывает описать еще
один способ доступа к servlet. Тег <FORM> описывает метод пере-
дачи и адрес ресурса как ответ на действия пользователя. Ничто
не мешает использовать тег <FORM> и для обращения к servlet:
<FORM METHOD="GET" ACTION="/servlet/com.corp.ServletDocs ">
<!— HTML-формы и теги, если необходимо.—>
Единственное, что необходимо учесть в этом случае, что тело servlet,
к которому обращается указанная строка, должно содержать реализацию метода doGet(), иначе возможна неприятность. Servlet-доступ к которому осуществляется из HTML-формы, должен быть порожден от
класса HttpServlet и иметь соответствующие методы. Используя методы getParameterNames(), getParameter() и getParameterValues() объекта HttpServletRequest, можно получить доступ ко всем параметрам, используемым в теге <FORM>.
•
Использовать JSP-теги <jsp:include>. Где используются servlet,
там могут использоваться и JSP. Специальный тег, предназначен-
ный для включения ресурса <jsp:include>, помогает создателям
JSP-страниц включать не только обращение к servlet, но и другим
HTML-страницам и JSP-приложениям. Еще один способ непосред-
ственного вызова servlet — использование специальных тегов JSP-
страницы. Вызов из JSP осуществляется при помощи встроенного
òåãà <jsp:include>:
<jsp:include page="servlet/com.corp/ServletDocs>
Можно заметить, что используемый URL подчиняется тем же пра-
вилам, что и в первом упоминании.
•
Вызов servlet из другого servlet. Доступ из servlet осуществляется
посредством специальных методов:
getServletConfig().getServletContext().getServlet("myServlet");
•
Использование стандартной операции инициирования класса. Су-
ществует также простой способ работы с классами не только с ser-
vlet, очень распространенный в Java:
myServlet = (myHttpServlet)Class.forName("myServlet").newInstance();

Часть 3 Серверные Java-компоненты Servlet 147
Использовать специальный тег <SERVLET>. И наконец, некоторые
•
Web-серверы, полностью реализованные на Java, используют спе-
циальные теги для вызова servlet, например, Java Web Server
(JWS) использует тег <servlet> для вызова необходимого servlet.
Определяя тег <SERVLET>, отпадает необходимость в использо-
вании HTML тега <FOFM>. В отличие от HTML тега, <SERVLET>
является чисто серверным решением, т. е. скорость обращения к
servlet значительно увеличивается.
<SERVLET NAME="myservlet" CODE="myservlet.class" CODEBASE=
="url" initparm1="value">
<PARAM NAME="parm1" VALUE="value">
</SERVLET>
Глава 21. Создание servlet
При создании servlet можно воспользоваться любом текстовым или спе-
циальным редактором, в которых создаются обычные Java-приложения.
В отличие от создания JSP, servlet нуждается в дополнительном инструменте — javac-java — компиляторе, поскольку servlet- это Java-приложение.
Использование специальных средств разработки, таких, как VisualA-
ge, значительно упрощает создание и отладку servlet. Графические возможности VisualAge помогают избежать рутинного ввода текста, а
встроенный отладчик информирует о возможных ошибках создания
servlet. Многие специальные редакторы могут работать с очень удобным
средством дополнения кода. Использование специальной комбинации
клавиш позволяет автоматически добавлять из предложенного списка
необходимый метод или параметр.
Для того чтобы приложение стало полнокровным servlet, приложение
обязательно должно наследоваться от одного из основных классов. В зависимости от протокола передачи, для которого проектируется servlet,
это могут быть или интерфейсы, или абстрактные классы, содержащиеся
в API servlet. Если для создания servlet используется интегрированное
средство разработки, подобное VisualAge, то отпадает необходимость в
установлении системной переменной CLASSPATH. В противном случае в
используемые jar-архивы должны быть указаны в CLASSPATH, либо как
аргументы в командной строке стандартного Java-компилятора, javac.
Основным при создании servlet можно назвать интерфейс Servlet.
В этом интерфейсе содержатся методы, которые должен иметь каждый
уважающий себя servlet.
Для создания протокола независимого servlet используется абстракт-
ный класс GenericServlet, описывающий поведение создаваемого объекта. Класс GenericServle наследован от центрального интерфейса Servlet.
Основной интерфейс Servlet, служащий для создания servlets, находится в пакете javax.servlet. Для работы servlet с протоколом http используется класс httpServlet, являющийся наследником GenericServlet
класса. Интерфейс, описывающий Servlet для работы с http-протоколом, реализует пять методов, три из которых определяют жизненный
цикл servlet, а другие два обеспечивают конфигурацию servlet. Методы

148 Часть 3 Серверные Java-компоненты Servlet
init() и destroy() содержат операторы для инициализации и освобождения ресурсов, в то время как для обработки клиентского запроса нужно
реализовать методы service() или его http эквиваленты методы doGet()
и doPost(). В добавление к методам «жизненного цикла» упомянутый
интерфейс содержит метод getServletConfig(), который описывает стартовые операции servlet, и метод getServletInfo (), предназначенный для
получения информации о самом servlet.
Главным методом, определяющим servlet, можно с полной уверенно-
стью назвать метод service(), имеющий несколько параметров. Класс
GenericServlet используется для создания протокола независимых servlets. Кроме методов «жизненного цикла», программист может в servlet
создавать собственные методы и переменные для различных задач, выполняемых servlet.
Наиболее широко в сетевой повседневности используется протокол
передачи http.
Для создания servlet, обрабатывающего HTTP-запросы, работающего
по http-протоколу, существует класс HttpServlet, наследуемый от GenericServlet. HttpServlet реализует дополнительные методы doGet () и
doPost() для работы с HTTP-запросами GET и POST соответственно.
В этом случае servlet не обязательно должен реализовывать метод service(), поскольку два вышеуказанных метода являются заменителями
метода service(). Указанный ниже достаточно простой пример описывает основные элементы servlet:
• import java.io.*;
•
import javax.servlet.*;
•
import javax.servlet.http.*;
•
public class SimpleHttpServlet extends HttpServlet {
•
protected void service(HttpServletRequest req, HttpServletResponse
res)
•
throws ServletException, IOException {
•
res.setContentType("text/html");
•
PrintWriter out = res.getWriter();
•
out.println("<HTML><TITLE>SimpleHttpServ-
let</TITLE><BODY>");
•
out.println("<H2>Servlet API Example — SimpleHttpServ-
let</H2><HR>");
•
out.println("<H4>This is about as simple a servlet as it gets!</H4>");
•
out.println("</BODY><HTML>");
•
out.close();}
Первые три оператора импорта предназначены для импортирования
классов и интерфейсов, необходимых для создания servlet. В четвертой
строке создается класс, порожденный от класса HttpServlet. Основной
метод любого servlet, указанный в пятой строке, содержит два аргумента, описывающих основные объекты request и response. В седьмой строке указывается тип приложения возвращаемого клиенту, в данном случае HTML-страница. Для вывода в браузере клиента создается объект
класса PrintWriter, представляющий символьный поток. В дальнейшем,
используя методы объекта out, выводятся строки в HTML-формате.
Строка тринадцать освобождает ресурсы.

Часть 3 Серверные Java-компоненты Servlet 149
Глава 22. Жизненный цикл servlets
Как и applet, servlet имеет собственный жизненный цикл. Servlet
«живет» на сервере, сервер полностью контролирует жизненный цикл
servlet. Сервер загружает нужный servlet, инициализирует переменные,
получает какие-то результаты работы servlet, прекращает действие
servlets и, наконец, выгружает из его памяти.
Отличительной особенностью servlet является встроенная многопоточ-
ность. Это значит, что несколько запросов, поступивших в один servlet, обрабатываются в одном адресном пространстве последовательно. При каждом новом обращении к основному методу servlet создается новый поток.
Каждый запрос клиента, поступивший на сервер, инициализирует
рождение servlet. Поскольку servlet является многопоточным приложением, каждый новый клиентский запрос обрабатывается в новом потоке, при этом не требуется перезагрузка самого servet. Сервер самостоятельно создает новый поток для обработки запроса. И сам же сервер занимается управлением поведения servlet. Каждый клиентский запрос
обрабатывается собственным потоком в собственном адресном пространстве, что гарантирует сохранение данных различных запросов.
С программной точки зрения жизненный цикл servlet описан в ин-
терфейсе Servlet с тремя методами жизненного цикла и парой добавочных методов. Началом жизни, но не рождением servlet можно считать
метод init(). Метод init() вызывается сервером единственный раз — при
первом обращении к данному servlet. Сервер использует метод init(),
чтобы проинициализировать данные, которые могут быть полезны в момент загрузки servlet, например, создание соединения с базой данных.
Следующий метод самый главный service(). Обращение сервера к этому
методу вызывает рождение servlet. В отличие от инициализационного
метода, являющегося в своем роде знакомством, которым можно пренебречь, метод service() является основным, и пренебрегать им ни в коем
случае нельзя. Для servlet, обрабатывающего HTTP-запросы, основными методами выполняющие роль service(), должны быть методы doGet()
или doPost(). Так же как и метод service(), методы http servlet выполняют непосредственно работу по обработке клиентского запроса. Самый
последний жизненный этап освобождение используемых ресурсов и
удаление экземпляра servlet. Удаление экземпляра происходит при вызове сервером метода destroy(). Им также можно пренебречь и не описывать конкретно в каждом создаваемом servlet. Метод destroy() имеет
одно полезное свойство. На каждом этапе жизненного цикла может случиться какая-либо нештатная ситуация, и если не предполагается использование никаких обработчиков возникших ситуаций в основным методах, то сервер обязательно вызывает метод destroy().
Servlet engine создает экземпляр исполняемого servlet либо при по-
ступлении запроса, либо при старте сервера на основе инициализационных параметров, прописанных в конфигурационном файле. Инициализационные данные используются до тех пор, пока servlet не уничтожится Web-сервером. Если инициализация прошла успешно, то servlet
становится доступным для использования, в противном случае servlet
выгружается из памяти Web- сервера.

150 Часть 3 Серверные Java-компоненты Servlet
22.1. Инициализация Servlet: init() метод и конфигурационные
параметры
Servlets может загружаться динамически, может быть установлен
как сервис, реагирующий на первый предназначенный для него запрос,
или же, если Web-сервер сконфигурирован определенным образом, servlet должен загружаться в момент старта Web- сервера. В каждом из
этих случаев метод init() необходим для инициализации servlet. Инициализация гарантирует, что данный servlet существует в системе, прежде
чем запрос будет обработан. Метод init() вызывается один раз при старте servlet и действует до момента уничтожения из памяти сервера самого servlet. Метод init() гарантирует выполнение всех операторов, находящихся в его теле, прежде чем будет вызван основой метод service() или
его http аналог. В метод init() можно передать единственный аргумент —
специфический объект класса ServletConfig, который позволяет проинициализировать servlet, используя пару имя/значение для каждого свойства, необходимого для servlet. При работе с инициализационными параметрами должен быть создан файл, содержащий данные параметры в
формате XML, или любой другой файл, содержащий прописанные параметры. Данный файл должен именоваться так же, как класс, для которого прописаны параметры и их значения. Данный файл должен находиться в директории, указанной в системной переменой CLASSPATH, и
иметь расширение (окончание) .servlet. Доступ к инициализационным
параметрам осуществляется с помощью специального метода getInitPerameter ("имя_параметра") объекта ServletCongfig.
В примере показано создание нескольких полей строкового типа:
protected String mydriver;
protected String myurl;
protected String myuserID;
protected String mypassword;
//вызывается метод init() с параметром config класса ServletConfig
public void init(ServletConfig config) throws ServletException {
super.init(config);
mydriver = config.getInitParameter("driver");
myurl = config.getInitParameter("URL");
myuserID = config.getInitParameter("userID");
mypassword = config.getInitParameter("password");
Здесь же представлен пример XML-файла, содержащего инициали-
зационные параметры для класса ServletInitServlet. Класс находится в
пакете com.rrlabs, на что указывает текст в теге <code>com.rrlabs.SimpleInitServlet </code>. В одном конфигурационном файле может содержаться несколько разных пар параметр / значение для одного sevlet
или, наоборот, одно значение для нескольких servlets.
<?xml version="1.0"?>
<servlet>
<code>com.rrlabs.SimpleInitServlet</code>
<init-parameter value="COM.ibm.db2.jdbc.app.DB2Driver" name="driver"/>
<init-parameter value="itso" name="password"/>
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
