- •Основные спецификации Java: se, ee, me. Состав ядра системы программирования Java.
- •Классы Java. Конструкторы, методы, наследование классов, управление доступом к методам и переменным класса, ключевые слова this и super.
- •Пакеты классов, понятие иерархии пакетов, переменная окружения classpath, инструкции package и import. Jar-архивы. Состав jar-архивов. Применение jar-архивов.
- •Интерфейсы Java: назначение, принцип применения.
- •Протокол http. Стандарты http. Основные методы (get, post, option, put, delete). Коды статуса ответа. Структура http-сообщений. Понятие о протоколе https.
- •Язык html. Основные теги. Структура html-страницы. Основные теги. Каскадные таблицы стилей.
- •Язык JavaScript. Стандарты языка JavaScript. Назначение языка. Основные возможности. Понятие dhtml.
- •Модель dom. Назначение модели dom. Уровни модели dom. Основные спецификации.
- •Сетевые службы. Примеры сетевых служб. Служба www (Web-сервер). Примеры реализации службы www.
- •Структура спецификации Java Platform Enterprise Edition. Основные технологии.
- •Основные спецификации Java. Структура спецификации Java Platform Micro Edition. Спецификации cdlc, midp. Технология wtk.
- •Технология Java Applets. Назначение. Основные возможности.
- •Спецификация Servlet. Назначение. Основные возможности.
- •Переопределение и переадресация запросов. Формирование get и post запросов в сервлете.
- •Спецификация jsp. Назначение. Основные возможности. Директивы, теги (определение, выполнение, скриплеты), предопределенные объекты.
- •Библиотека тегов. Назначение основные возможности. Структура jsp-страницы при применении библиотеки тегов.
- •Основные модели web-приложений на основе технологий сервлетов и jsp.
- •Основные системные объекты (контекст, сессия, запрос, ответ). Назначение и жизненный цикл объектов.
- •Дескриптор развертывания web-приложения. Параметры инициализации web-приложения: назначение, принципы применения.
- •Атрибуты системных объектов. Назначение. Принципы применения.
- •Заголовки http-запросов и ответов. Назначение. Принципы применения.
- •Фильтры (Java Filter). Назначение. Принципы применения.
- •Слушатели (Java Event Listener). Назначение. Принципы применения.
- •Технология jdbc. Состав jdbc. Структура jdbc-приложения. Типы jdbc-драйверов.
- •Технология jaas. Назначение. Основные возможности. Роли, пользователи и их взаимосвязь.
- •Структура web-клиентов серверов smtp и pop3.
- •Структура web-приложения пересылающего файлы.
- •Методология Ajax. Структура Ajax-приложения, принципы разработки и применения.
- •Понятие Application Server. Наиболее известные реализации.
- •Понятие технологии ejb.
Протокол http. Стандарты http. Основные методы (get, post, option, put, delete). Коды статуса ответа. Структура http-сообщений. Понятие о протоколе https.
HTTP (сокр. от англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов.
GET - Используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса.
POST - Применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер.
PUT - Применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существовало ресурса, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content). Сервер не должен игнорировать некорректные заголовки Content-* передаваемые клиентом вместе с сообщением. Если какой-то из этих заголовков не может быть распознан или не допустим при текущих условиях, то необходимо вернуть код ошибки 501 (Not Implemented). Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу.
OPTIONS - Используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. В ответ серверу следует включить заголовок Allow со списком поддерживаемых методов. Также в заголовки ответа может включаться информация о поддерживаемых расширениях.
HEAD - Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения.
PATCH - Аналогично PUT, но применяется только к фрагменту ресурса.
DELETE - Удаляет указанный ресурс.
TRACE - Возвращает полученный запрос так, что клиент может увидеть, какую информацию промежуточные серверы добавляют или изменяют в запросе.
LINK - Устанавливает связь указанного ресурса с другими.
UNLINK - Убирает связь указанного ресурса с другими.
CONNECT - Преобразует соединение запроса в прозрачный TCP/IP туннель, обычно чтобы содействовать установлению защищенного SSL соединения через не шифрованный прокси.
Обработка запросов и ответов HTTP
В примере сервлета, который рассматривался выше, метод service получает управление после того, как http-запрос клиента поступает на обработку в сервлет. Для того чтобы определить тип запроса протокола HTTP, использованный клиентом для вызова сервлета, можно воспользоваться методом getMethod объекта класса HTTPServletRequest. Объект этого класса, как уже отмечалось выше создается web-контейнером и передается методу service в качестве первого параметра. Второй параметр метода service является объектом класса HTTPServletResponse и тоже формируется web-контейнером, он предназначен для подготовки и пересылки http-ответа клиенту.
Класс HttpServlet имеет собственную реализацию метода service, который в зависимости от типа http-запроса передает управление в один из следующих переопределяемых методов: doGet, doPost, doPut, doDelete, doHead, doOptions, do Trace. Перечисленные методы соответствуют различным типам http-запросов. Наиболее часто используемые типы запросы в web-приложениях – это GET и POST. Именно обработка только этих запросов будет рассматриваться далее. С полным перечнем http-запросов их назначением и способом применения можно ознакомиться в документе RFC 2068, который доступен на официальном сайте организации-разработчика Internet Engineering Task Force.
Все сервлеты должны реализовать интерфейс javax.servlet.Servlet (далее просто Servlet). Этот интерфейс предполагает три основных метода и два вспомогательных.
Метод init вызывается сервером при инициализации сервлета. Этот метод позволяет программисту выполнить некоторые действия перед началом работы сервлета. В качестве параметра метод получает объект, реализующий интерфейс ServletConfig. Методы этого интерфейса реализуются сервером, они позволяют сервлету получить информацию о своей конфигурации.
Метод destroy тоже вызывается сервером, но при выгрузке сервлета. Этот метод используется разработчиком сервлета для выполнения действия связанных с окончанием работы – освобождение ресурсов, закрытие соединений с сервером базы данных и т.п.
Метод service предназначен для обработки запроса клиента. Метод вызывается сервером при получении запроса клиента на вызов сервлета. Сервер формирует два параметра. Первый реализует интерфейс HTTPServletRequest и используется для того, чтобы получить информацию о http-запросе. Второй параметр, реализующий интерфейс HTTPServletResponse, дает возможность сервлету формировать http-ответ клиенту. В данном примере в функции service используется вызов метода getMethod интерфейса HTTPServletRequest. Функция getMethod позволяет определить тип http-запроса (get, post, put, delete, options и т.д.).
Структура и интерфейсы сервлета
Java Servlet API организован в виде двух пакетов, содержащих два набора базовых классов: javax.servlet – общие для всех сервлетов интерфейсы и классы; javax.servlet.http – расширение пакета javax.servlet, обеспечивающее поддержку протокола HTTP. На рис. 3.1 представлен java-класс Sss, расширяющий класс javax.servlet.http.HttpServlet и реализующий интерфейс javax.servlet.Servlet. Объект класса Sss называется сервлетом Sss.
1xx (предварительный ответ)
2xx (успешно)
3xx (переадресация)
4xx (ошибка запроса)
5xx (ошибка сервера)
Каждое HTTP-сообщение состоит из трёх частей:
Стартовая строка — определяет тип сообщения;
Заголовки — характеризуют тело сообщения, параметры передачи и прочие сведения;
Тело сообщения — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.
Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа. Исключением является версия 0.9 протокола, у которой сообщение запроса содержит только стартовую строку, а сообщения ответа только тело сообщения.
HTTPS (Hypertext Transfer Protocol Secure) — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивается защита этих данных. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443.
