Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-1 Мережне програмування / ЛК / Лекция 7 Сетевое программирование - Технологии разработки web-приложений с использованием Java EE (часть 1).pptx
Скачиваний:
112
Добавлен:
02.02.2021
Размер:
190.73 Кб
Скачать

Харьковский Национальный Университет Радиоэлектроники Кафедра Инфокоммуникационной инженерии

Технологии разработки web-приложений с использованием Java EE

Доцент кафедри ИКИ Евдокименко Марина Александровна

2017

Содержание

1.Понятие сервлетов.

2.Функции сервлетов.

3.Типы ответов сервлета.

4.Использование объектов сервлетов при обработке запросов.

Литература

1.Java. Промышленное программирование : практ. пособие / И.Н. Блинов, В.С. Романчик. – Минск : УниверсалПресс, 2007. Гл. 17-22. стр. 414-535

2.Герберт Шилдт "Java 7. Полное руководство" (8-е издание) Гл. 32. стр. 1003-1027.

3.The Java EE 7 Tutorial. http://docs.oracle.com/javaee/7/tutorial/doc/

4.Documentation bundle for the Apache Tomcat Servlet/JSP container

http://tomcat.apache.org/tomcat-7.0-doc/

Распределенные многоуровневые приложения

Платформа Java EE использует распределенную многоуровневую модель приложений.

1.Компоненты клиентского уровня работают на клиентской машине.

2.Компоненты Web-уровня работают на J2EE-сервере.

3.Компоненты бизнес-уровня работают на J2EE-сервере.

4.Программное обеспечение уровня корпоративной информационной системы (EIS) работает на EIS- сервере.

Хотя J2EE-приложение состоит из трех или четырех уровней, показанных на рисунке, многоуровневые J2EE-приложения обычно принято называть трехуровневыми,

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

Понятие Web-компонента и Web-контейнера

Согласно спецификации J2EE Web-компонентами являются

Сервлеты

Фильтры

Слушатели событий

JSP-страницы,

которые могут отвечать на HTTP-запросы Web-клиентов.

Управление работой web-компонентов возлагается на Web-контейнер

Web-контейнер – стандартизованный компонент, который занимается системной поддержкой Web-компонентов и обеспечивает их жизненный цикл в соответствии с правилами, определенными в спецификациях

Функции Web-контейнера:

Управление жизненным циклом компонентов

Перенаправление запросов

Управление конкурентным доступом

Управление безопасностью

Понятие сервлета

Сервлет - это самостоятельный компонент, который функционирует в web- контейнере, динамически генерируя HTML-страницу, XML-документ или другие данные в ответ на полученный от клиента запрос.

Спецификация технологии сервлетов находится по адресу https://jcp.org/en/jsr/detail?id=340

Последняя версия спецификации – 3.1

Сервлет не имеет привязки к определенному контейнеру

Взаимодействие с клиентом только через контейнер

API сервлетов не ориентировано на какой-либо протокол

Сервлет с точки зрения Java

– это класс, расширяющий абстрактный класс javax.servlet.GenericServlet, который реализует интерфейс javax.servlet.Servlet

Подкласс для протокола HTTP: javax.servlet.http.HttpServlet

Для работы и компиляции требуются классы поддержки сервлетов (j2ee.jar или servlet.jar)

В Apache Tomcat 7 по адресу /lib/servlet-api.jar

Функции сервлетов

Чтение данных, переданных пользователемНапример, из HTML-форм

Просмотр информации о запросе, которая встроена в HTTP-запросСведения о возможностях браузера, cookies, имени хоста клиента,

делающего запрос, и т.д.

Обращение к компонентам бизнес-логики и получение результатов

Генерация ответа

Возможность генерации бинарных данных

Установка параметров HTTP-ответа

Возвращение ответа клиенту

Жизненный цикл сервлета

Жизненный цикл сервлета управляется контейнером, в котором сервлет был развернут.

Когда запрос отображается на сервлет, контейнер выполняет следующие шаги:

Если экземпляр сервлета не существует, Web-контейнер:

Загружает класс сервлета

Создает экземпляр класса сервлета

Инициализирует экземпляр сервлета, вызывая метод init()

Вызывает метод service(), передавая ему объекты запроса и ответа. Для каждого нового клиента при обращении к сервлету создается независимый поток, в котором производится вызов метода service(). Метод service() предназначен для одновременной обработки множества запросов.

Если контейнеру нужно удалить сервлет, он его финализирует, вызывая метод destroy(), в теле которого следует помещать код освобождения занятых сервлетом ресурсов.

Класс HttpServlet

Предназначен для обработки запросов по протоколу HTTP

Метод service() класса HttpServlet вызывает один из методов doXxx(), в зависимости от типа запроса:

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

doPost(HttpServletRequest req, HttpServletResponse resp) – предназначен для

обработки POST-запросов

 

 

doPut(…)

 

 

doDelete(…), и др.

 

doGet(request, response)

Одинаковая обработка GET и POST:

GET

 

GET

service(request, response)

POST

POST

doPost(request, response)

 

Не рекомендуется переопределять метод service(). Для этого лучше поместить обработчик в doGet(), а в doPost() просто вызвать doGet()

GET или POST?

GET передает данные серверу используя URL, тогда как POST передает данные, используя тело HTTP запроса.

http://host/path/resource?param1=value1&param2=value2

POST /path/resource HTTP/1.1 <Различные заголовки> Content-Length: 25 <Различные заголовки> login=admin&param1=qwerty

Длина URL'а ограничена в разных браузерах (примерно 1024 символами), это и будет верхним ограничением для данных, которые можно отослать GET'ом.

POST может отправлять гораздо большие объемы данных. Лимит устанавливается веб-сервером и обычно равен около 2MB.

Передача данных методом POST чуть более скрытна, чем методом GET, так как данные не отображаются напрямую в web-клиенте пользователя (в отличии от URL, который явно виден в строке браузера). Однако понятно, что данные POST запроса можно увидеть, воспользовавшись сетевым анализатором.