ЛАБОРАТОРНАЯ РАБОТА №7

Создание динамических WEB-приложений с использованием сервлетов и JSP

Цель: Изучить возможности Servlet API и технологии JavaServer Pages для разработки веб-приложений и получить навыки реализации сервлетов и JSP-страниц для обработки запросов пользователей.

WEB-приложение — клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — WEB-сервер.

Динамические WEB-приложения могут обеспечить изменяющийся (динамический) контент для пользователя. В динамических WEB-приложениях сервер преобразует файл после прочтения его файловой системой и перед отправкой его в WEB-браузер пользователя. Программное обеспечение, которое сервер WEB-приложений использует в этом процессе, называется интерпретатор. Интерпретатор считывает файлы, обрабатывает их в соответствии с инструкциями, находящимися внутри файлов, а затем отправляет результат WEB-браузеру пользователя в виде HTML страницы.

Что такое HTTP

HTTP – это Hyper Text Transfer Protocol – протокол передачи гипертекста. По большому счету передается не гипер, а самый обычный текст. Гипертекстом он становиться тогда, когда его отображает браузер. Именно браузер в соответствии с тэгами форматирует текст, делает ссылки (именно это делает текст гипертекстом), отображает рисунки и т. д. Когда приложение создает TCP/IP соединение с другим приложением (на другом компьютере или на вашем же), это можно представить себе как трубу, по которой в обе стороны могут передаваться байты. HTTP как раз и описывает, какие байты (символы) и в каком порядке надо передавать, чтобы клиент и сервер понимали друг друга. HTTP считается одним из самых простых протоколов. На сегодняшний день существует четыре версии протокола HTTP – 0.9, 1.0, 1.1 и 2. Наиболее распространенными командами являются GET и POST. Формат запроса выглядит следующим образом:

НЕ нашли? Не то? Что вы ищете?

GET <URL> HTTP/1.0

<Имя_заголовка_1>:<значение_заголовка_1>

Для версии 1.1 запрос несколько сложнее:

GET <URL> HTTP/1.0

Host: <host>

<Имя_заголовка_1>:<значение_заголовка_1>

URL включает в себя путь до ресурса и параметры, которые передаются после пути. После вопросительного знака идут пары <имя>=<значение> через знак &amp;:

GET /rfs/show? showName=direct&amp;secondLetter=123

Здесь мы запросили ресурс /rfs/show, а также передали параметры showName и secondLetter.

Методы запроса GET и POST доступны вам при создании формы. Метод HEAD редко используется браузером, поскольку он запрашивает только заголовок ответа, а тело ответа в таком случае не передается. Например, для проверки того, не изменилась ли страница, браузер может запросить заголовок, но при этом не порождается полноценный обмен данными.

По умолчанию при запросе используется метод GET. Метод POST используется только тогда, когда это явно указано в запросе формы.

Метод POST используется тогда, когда это явно указано в атрибуте формы METHOD. В отличие от метода GET, POST помещает данные не в URL, а в тело запроса. Запрос POST во многом похож на ответ HTTP. Первая строка представляет собой стандартный запрос HTTP, в котором указан метод POST. В ней могут быть необходимые дополнительные заголовки, отделяемые от тела запроса пустой строкой.

Тело запроса при использовании метода POST передается программе как стандартный поток ввода.

Понятно, что при разработке приложений возникнет вопрос, какой из этих методов применять. В большинстве случаев применимы оба метода и оба будут хорошо работать. Однако бывают ситуации, когда использование того или иного метода дает определенные преимущества.

Рассмотрим несколько ситуаций, когда есть смысл предпочесть метод GET или POST.

·  Если вы хотите, чтобы ваша программа вызывалась с помощью ссылки, предпочтение следует отдать методу GET.

·  Если вы не хотите, чтобы аргументы, передаваемые вашей программе, записывались в файл отчета сервера, используйте метод POST. Например, если форма требует указать имя пользователя и пароль, вы вряд ли захотите, чтобы имена и пароли сохранялись в файле отчета. Кроме того, не разумно передавать пароль как часть URL.

·  Если ваша форма имеет значительные размеры, например, в ней есть текстовые окна с заметками и комментариями, следует использовать метод POST. В этом случае можно применять и метод GET, но тогда вы можете столкнуться  с ограничениями на размер URL, разными для разных операционных систем и браузеров (ограничение обусловлено размером переменных окружения). Проще воспользоваться методом POST.

·  Если ваша форма содержит файловое поле, используйте метод POST. Кроме того, в этом случае нужно установить значение атрибута ENCTYPE в multipart/form-data.

Как уже упоминалось, клиент запрашивает у WEB-сервера какой-либо ресурс по имени – URL. И получив запрос, сервер уже может решить, что же реально просит пользователь. Иногда это самый простой статический файл, который нужно передать. Но, очень часто, используя URL, сервер создает HTML-страницу динамически. Созданием такой страницы может заниматься посторонняя программа, которая выводит свои данные не на экран, а в область данных сервера (не совсем точно, но здесь это не требуется) – эта технология до сих пор существует. Называется она CGI – Common Gateway Interface. Эта технология считается очень медленной и не современной. Но, тем не менее, пока существует. Java предлагает свое решение этой проблемы – сервлеты.

В двух словах описать работу сервлета можно так: WEB-сервер, который работает с сервлетами, запускает Java-машину, которая в свою очередь выполняет сервлет, а сервлет отдает данные, которые он сформирует. То есть, при поступлении запроса от клиента сервер с помощью специального конфигурационного файла может определить, какой сервлет выполнить, сервлет выполняется и создает HTML-страницу, которую сервер отправляет клиенту. На сервер приходит запрос от клиента, запрос содержит внутри себя URL и параметры. Сервер имеет специальный конфигурационный файл, который ему сообщает о том, какой сервлет надо выполнить в случае прихода определенного URL. Сервлет выполняется и создает HTML-страницу, которая отсылается клиенту. Сервер, по сути, является контейнером, который загружает сервлеты, выполняет их, вызывая определенные методы и, получив от них результат, отправляет его клиенту. Таким образом, сервлет – это Java-класс, который наследуется обычно от класса HttpServlet и переопределяет часть методов:

1. doGet – если сервлет использует GET запрос.

2. doPost – если сервлет использует POST запрос.

3. doPut, doDelete – если сервлет использует PUT и DELETE запрос (они тоже существуют в HTTP). Эти методы реализуются крайне редко, так как сами команды тоже очень редко встречаются.

4. init, destroy – для управления ресурсами в момент создания сервлета и в момент его уничтожения.

Если же необходимо перехватывать все команды, то проще переопределить метод service. Именно этот метод вызывается при приходе запроса от клиента. В HttpServlet происходит разбор запроса и в соответствии с указанной командой вызывается метод doGet, doPost и т. д. Перед написанием сервлета необходимо запустить WEB-сервер. Мы будем использовать Tomcat.

Запускаем Web-сервер Tomcat

Для начала необходимо загрузить Apache Tomcat необходимой версии (рекомендуем использовать версию 7).

По сути, вы загрузите архив, который надо просто распаковать в какую-либо директорию. После загрузки и установки необходимо указать путь к вашему файлу jdk. Для этого зайдите в папку bin и с помощью блокнота откройте файл catalina. Далее ищем строку, содержащую путь к jdk. Она должна выглядеть примерно так:

setlocal

set JAVA_HOME=D:\jdk

Затем, изменяем указанный путь.

Теперь необходимо запустить Tomcat. Для этого снова зайдите в папку bin и запустите файл startup. bat. Если все сделано верно, должно запуститься DOS-окно, в которое выводитсяинформация. Необходимо дождаться, когда в окне появится примерно такая строка:

INFO: Server startup in 8828 ms

Если все прошло успешно запустите браузер и наберите в нем

http://localhost:8080/

8080 – это порт по умолчанию, который занимает Tomcat.

После перехода по указанному URL должна открыться главная страница сервера. На этой странице должна располагаться такая надпись:

If you're seeing this, you've successfully installed Tomcat. Congratulations!

Создаем сервлет

Начнем с создания проекта. Чтобы создать web-приложение в NetBeans, зайдите в меню File->New Project… В появившемся окне в списке Categories выберите Java Web после чего в списке Projects щелкните на Web Application. Нажмите Next.

В следующем окне нужно указать имя и расположение проекта в файловой системе. Установим имя для нашего проекта в test-servlet, а расположение оставим по умолчанию. Все остальные настройки также оставляем как есть.

В следующем диалоговом окне необходимо выбрать сервер, на котором будет выполняться наше web-приложение. Например Apache Tomcat 6.0.18. В выпадающем списке Java EE Version выберите Java EE 5, а Context path оставим без изменений (/test-servlet). Жмем Finish. На этом создание web-приложения закончено. Можно нажать F6 или кнопку Run Main Project и посмотреть на результат нашей с Вами работы. В браузере должна открыться страница со словами “Hello World!”.

Вторым шагом будет создание сервлета, являющегося частью web-приложения.

Для начала создадим в Source Packages структуру пакетов нашего приложения. Для этого правой кнопкой мыши кликаем по пакетам исходных кодов. Затем выбираем Новый->Пакет Java. И указываем следующее имя пакета: ru. topcode. testserv.

Создадим теперь в пакете ru. topcode. testserv класс FirstServlet. Этот класс расширяет класс HttpServlet и содержит два метода: doGet() и doPost().

package ru. topcode. testserv;

import java. io. IOException;

import java. io. PrintWriter;

import java. util. Enumeration;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4