Создание сервлетов в Java

Цель занятия

Научиться писать сервлеты и тестировать их выполнение на сервере. Рассмотреть вопросы, связанные с инсталляцией Web- сервера TOMCAT. Научиться правильно размещать классы сервлетов и адресовать сервлеты из документов HTML. В качестве дополнительной литературы можно использовать [10, 14].

Краткие теоретические сведения

Сервлет — это Java-nporpaMMa, работающая на стороне сервера. Для запуска сервлета следует установить на стороне сервера программу Web-cepeepa. В качестве Web-cepeepa используем Tomcat 3.0 (можно работать также с версиями 3.1, 4.0, 5.0). Вам следует скачать этот бесплатный Web-cepeep, используя Internet- адрес http://www.jakarta.apache.org/tomcat/. На этом же сайте вы можете прочитать инструкции по установке Tomcat. При запуске приложения Web-cepeep должен быть активным (запущенным из командной строки MS-DOS). При инсталляции Tomcat 3.0 следует обратить внимание на следующее.

□               В конфигурационном файле server.xml замените значение порта 8080 на 80 в строке

<ContextManager port=8 08 0 hostName=" " inet=" ">

□               Запишите в файле startup.bat значение переменной jAVA_HOME в первой строке этого файла так:

set JAVA_HOME=nyTb к каталогу с файлом java.exe

□               Аналогичным образом установите там же значение переменной CATALiNA_HOME, присвоив ей значение пути, где расположен Tomcat:

set CATALINA_HOME=nyTb к каталогу Tomcat:

□               При работе с Windows 98 установите в сеансе MS-DOS в окне свойств размер памяти Initial Environment с Avto на 2816. При работе в более старших версиях Windows этого делать не надо.

Сервлеты пишут с помощью пакета javax. Этот пакет следует скопировать из дистрибутива Tomcat в корневой каталог Java.

Сервлет обрабатывает строки запросов от браузеров типа Internet Explorer. Браузер передает на сервер запрос, содержащий данные сайта (HTML-документ). Далее считаем, что Web-cepeep и клиент расположены на одном и том же компьютере. HTML-документ пишется на языке HTML, в нашей работе он будет таким:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>

<HEAD>

<H1> Получение данных от формы</Н1>

</HEAD> <BODY BGCOLOR=#34AAFF>

<FORM

ACTION="http://127.0.0.1:80//examples/servlet/MyServlet">

<INPUT type="TEXT " name="tf" value="Input Something Pleasant"></Input>

<Br>

<INPUT type="SUBMIT" value="SEND FORM TO SERVLET"></INPUT> </Form>

</BODY>

</HTML>

Этот документ открывается браузером в следующем виде фис. 2.21).

Рис. 2.21. Окно HTML-документадля отсылки УУеЬ-серверу

Видим, что на форме расположены кнопка и текстовое поле. Этого вполне достаточно для разъяснения сути. Отметим, что кнопка имеет тип suBMiT. Кнопка этого типа используется для соединения с сервлетом.

В HTML-документе необходимо в теге <ACTioti> указать адрес программы сервлета, которому будет передан сам документ при нажатии на кнопку типа suBMiT. Соотвествующая строка в тексте документа такова:

<FORM ACTION="http://127.0.0.1:80//examples/servlet/ MyServlet">

Из этой строки следует, что имя класса сервлета есть MyServ- iet.class. Часть адреса http://i27.0.0.i:80 задает тип протокола, сетевой адрес компьютера и номер порта (в нашем случае — 80). Для создания класса сервлета следует подготовить исходный Java-файл сервлета. Этот файл нужно скомпилировать обычным образом и получить класс сервлета. Файл с классом сервлета следует поместить, как это принято в Tomcat, в каталог …//TOMCAT/webpages^YEB-INF/classes. Однако все же следует самостоятельно проверить, откуда Web-сервер выполняет запуск сервлетов. Для этого активизируйте окно программы Internet Explorer и введите следующий адрес: http:/^ocaUiost. До выполнения этих действий Tomcat уже должен быть запущен. После нажатия кнопки <Enter> откроется домашняя страница Tomcat (рис. 2.22). Выберите на ней ссылку Servlet Examples и откройте текст HTML-документа из меню браузера (View Source). Найдите в тексте документа ссылку на сервлет.

Рис. 2.22. Окно УУеЬ-сервера Tomcat

Напишем следующий исходный код сервлета (листинг 2.30).

Листинг 2.30. Текст сервлета

import java io.*;

import javax servlet.*;

import javax servlet.http.*;

public class MyServlet extends HttpServlet

public void doGet (HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException

response.setContentType("text/html") ;

printWriter out= response.getWriter();

String title="nony4eroie данных от формы";

String DocType= "<!DOCTYPE HTML PUBLIC \"-//W3//DTD HTML 4.0"+

"Transitional//EN\">\n";

out.println ("<HTML>\n"+

"<HEAD><H1> Получение данных от формы</H1></HEAD>\n"+

"<BODY BGCOLOR=34AAFF><BR><BR>");

String s=request.getParameter("tf");

out.println("TEXT FROM TEXT-FIELD is"+s);

out. println ("</BODYX/HTML>") ;

Как видим, код сервлета получился небольшим. Дадим следующие пояснения. Сервлет не только должен прочитать переданные ему браузером данные документа, но и вернуть результаты своей работы обратно на сторону клиента и, как правило, в форме HTML-документа. Строка:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

используется для указания браузеру того, что требования к правильности написания тегов не являются жесткими (параметр —

Transitional).

Выводу тела документа из сервлета должен предшествовать вывод типа документа:

response.setContentType("text/html");

Это обстоятельство следует иметь в виду всегда, поскольку браузер по-разному интерпретирует различные виды документов.

Значения переменных формы получаем с помощью команды наподобие следующей:

String s=request.getParameter("tf");

Здесь переменная класса nttpServietRequest request позволяет прочитать все данные формы, переданные браузером, используя команду getParameter (). Операндом команды является имя текстового поля, объявленное в HTML-документе:

<INPUT type="TEXT" name="tf" value="Input Something Pleasant"></Input>

Таким образом, можно получить значения всех визуальных элементов формы. Другая объектная переменная класса nttpServ- letResponse response позволяет вернуть информацию обратно клиенту. С помощью этой переменной можно вернуть клиенту обычный HTML-документ. В приведенном ранее примере видим строки:

printWriter out= response.getWriter();

out.println ("<HTML>\n"+

"<HEAD><H1> Получение данных от формы</Н1х/НЕА0>\п"+

"<BODY BGCOLOR=34AAFF><BR><BR>"); где как раз и используется данная объектная переменная: на ее основе создается потоковая переменнаядля вывода out, которая затем выполняет прямой вывод в формате HTML. Например, строки:

out.println ("<HTML>\n"+

"<HEAD><H1> Получение данных от формы</Н1х/НЕА0>\п"+

"<BODY BGCOLOR=34AAFFXBRXBR>") ;

String s=request.getParameter("tf"); out.println("TEXT FROM TEXT-FIELD is"+s); out. println ("</BODYX/HTML>") ;

как раз и обеспечивают вывод окна документа, показанного на рис. 2.21.

Для активизации сервлета нажмите кнопку submit (в документе на ней имеется надпись ”sEND FORM то SERVLET"). Кнопка sub- mit выполняет попытку соединения с URL-адресом, прописанным в параметре Астгоы тега FORM:

ACTION="http://127.0.0.1:80//examples/servlet/MyServlet">

Этот адрес должен определять место нахождения сервлета MyServiet.class. Это место регламентируется документацией по Tomcat, так что определите его исходя из примеров, установленных в директории EXAMPLES TOMCAT. Обратим внимание на то, что в тексте сервлета используется метод обработки формы doGet (). Это наиболее быстрый способ, ориентированный на передачу серверу небольших сайтов. Альтернативным способом является метод doPost (), который здесь не рассматривается.

Наконец, остается привести базовую структуру сервлета:

import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

public class ServletClass extends HttpServlet {

public void doGet(HttpServletRequesr request,

HttpServletResponse response) throws ServletException, IOException {

// Переменная request используется для чтения полей формы // Переменная response используется для вывода ответа // в формате HTML

PrintWriter out = response.getWriter();

// Используем out.println для вывода документа на стороне // клиента

Итак, резюмируем наши знания по этому практическому занятию.

□               Перед выполнением сервлета необходимо запустить Web- сервер Tomcat. Запуск и настройка сервера Tomcat являются важной составной частью настоящей работы. При работе с Tomcat 3.0 в файле server.xml измените строку:

<ContextManager port="8080" HostName=" " inet=" "> на

<ContextManager port="80" HostName=" " inet=" "> тем самым задав новое значение порта для связи с браузером.

□               Далее в файлах startup.bat и startserver.bat задайте значение переменной jAVA_HOME, равной пути, где расположен дистрибутив JAVA SDK. Поскольку файлы startup.bat и startserver.bat являются командными файлами MS-DOS, то следует поместить команду

set JAVA_HOME=c:\Program Files\JAVA\…

указав путь к каталогу с программой java. exe в самом начале этих файлов.

Аналогичным образом следует установить параметр CATA- LiNA_HOME равным значению пути к каталогу Tomcat.

□               Для запуска сервера Tomcat запустите из среды программы Norton Commander или FAR (или из командной строки MS- DOS) командный файл startup.bat.

□               Теперь скомпилируйте сервлет и устраните ошибки. Пусть файл MyServlet.class успешно создан. Чтобы этот файл был доступен из вашего сайта, его нужно поместить в нужный каталог. По умолчанию таковым является

с:\TOMCAT\webpages\WEB-INF\classes.

Однако проще выяснить, откуда запускаются сервлеты, используемые в Tomcat в качестве примеров, как было описано ранее.

Источник: Герман О. B., Герман Ю. О., Программирование на Java и C# для студента. — СПб.: БХВ-Петербург, 2005. — 512 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100