Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_veb_1.doc
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
739 Кб
Скачать
☆
  1. Контейнеры сервлетов и их назначение. Требования к контейнерам.

Контейнер сервлетов это ни что иное, как скопилированная программа. Основные функции контейнера это загрузка, инициализация и выполнение сервлетов.

Контейнер обрабатывает большое количество запросов, так как он может содержать много активных сервлеты, слушателей и т. д. Контейнер и объекты в контейнере являются многопоточными. Таким образом, каждый объект должен быть потокобезопасным, т.к. несколько запросов, принятых контейнер одновременно, могут использовать объект в нескольких потоках.

Примечание: контейнер сервлетов может работать самостоятельно т.е. без веб-сервера или даже на другом хосте.

Мы можем классифицировать контейнеры сервлетов, как:

1. простой контейнер сервлетов не полнофункционален и поэтому он может работать только с очень простыми сервлетами. Он выполняет следующие действия:

  • ожидание HTTP запроса.

  • создание объекта ServletRequest и объекта ServletResponse.

  • если запрашивается статический ресурс, выполнить метод process экземпляра класса StaticResourceProcessor, передав ему объекты ServletRequest и ServletResponse.

  • если запрашивается сервлет, загрузить класс сервлета и вызвать его метод service, передав ServletRequest и ServletResponse. Обратите внимание, что в этом контейнере сервлетов, класс сервлета загружается каждый раз, когда запрашивается сервлет.

2. Полнофункциональный контейнер сервлетов дополнительно выполняет следующие действия для каждого HTTP запроса:

  • когда сервлет вызывается в первый раз, загружает класс сервлета и вызвать его метод init (только один раз).

  • для каждого запроса создаёт экземпляр javax.servlet.ServletRequest и экземпляр javax.servlet.ServletResponse.

  • вызывает метода service сервлета, передавая ServletRequest и ServletResponse.

  • когда класс сервлета заканчивает работу, вызывает метод destroy сервлета и выгружает класс сервлета.

Теперь давайте посмотрим, что контейнер сервлетов делает при каждом HTTP запросе для сервлета, в целом:

  • контейнер сервлета загружает класс сервлета и вызывает его метод init, как только сервлет вызывается в первый раз.

  • затем контейнер создаёт экземпляр javax.servlet.ServletRequest и javax.servlet.ServletResponse для каждого запроса.

  • затем он передаёт объекты ServletRequest и ServletResponse методу service сервлета.

  • наконец, он вызывает метод destroy и выгружает класс сервлета.

Требования к контейнерам - ???

  1. Java сервлеты. Их назначение. Способы создания. Виды сервлетов. Способы доступа к параметрам и возврата данным веб серверу.

Сервлет является Java-интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ.

Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов. Для таких приложений технология Java Servlet определяет HTTP-специфичные сервлет классы.

Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для создания сервлетов.

Сервлеты расширяют функциональность Web‑серверов и являются мощным средством программирования. Сервлеты – это модули, расширяющие возможности серверов типа запрос-ответ, таких как Java‑совместимые web‑сервера. Сервлеты для серверов то же самое, что и апплеты для браузеров, но в отличие от апплетов, у сервлетов нет графического интерфейса пользователя. Сервлеты могут быть встроены в различные серверы, так как API сервлетов, который используется для их написания, не предполагает никакого знания ни об окружении сервера, ни о его протоколе. Сервлеты наиболее широко используются с HTTP‑серверами; многие web‑сервера поддерживают API сервлетов. Они обеспечивают такой способ генерирования динамических документов, который позволяет облегчить их написание и ускорить выполнение. Сервлеты также решают проблему программирования на стороне сервера с платформо-зависимыми API, которые разрабатываются с использованием Java Servlet API, стандартного расширения Java. Характерной особенностью сервлетов является то, что они не требуют создания новых процессов при каждом новом запросе. Множество сервлетов выполняются параллельно в рамках одного процесса на сервере.

Сервлет с точки зрения Java - это класс, расширяющий абстрактный класс javax.servlet.GenericServlet, который в свою очередь реализует интерфейс javax.servlet.Servlet. Расмотрим основные методы, которые присутствуют в каждом сервлете и служат для организации его жизненого цикла.

Метод void init(ServletConfig config) вызывается один раз в момент загрузки

сервлета контейнером. Создавая Java класс для нового сервлета, разработчик может переопределить метод init() с тем, чтобы тот выполнил определенные подготовительные работы.

Метод service() вызывается при каждом обращении клиента к сервлету. Метод service() получает из web-контейнера запрос клиента в виде объекта ServletRequest и строит соответствующий ответ в объекте класса ServletResponse. Этот метод вызывает один из методов doXxx(), в зависимости от типа запроса:

doGet(HttpServletRequest req, HttpServletResponse resp) - предназначен для обработки GET-запросов;

doPost(HttpServletRequest req, HttpServletResponse resp) - предназначен для обработки POST-запросов.

Метод destroy() вызывается контейнером в момент уничтожения экземпляра сервлета. Разработчик может, переопределив этот метод, произвести некоторые операции, такие как освобождение выделенных ресурсов и т.п.

Виды сервлетов. -???

Способы доступа к параметрам и возврата данным веб серверу.

Класс ServletRequest включает методы, позволяющие читать имена и значения параметров запроса клиента.

String getParameter (String pname) – возвращает значение параметра с именем pname.

Enumeration getParameterNames() – возвращает перечисление имен параметров этого запроса.

String[] getParameterValues() – возвращает перечисление значений параметров этого запроса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]