Протокол http. Клиент-серверная модель взаимодействия....

Post on 12-Apr-2017

73 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Протокол HTTP

2

Основные сведения

HTTP — широко распространённый протокол передачи данных, изначально предназначенный для передачи гипертекстовых документов.

Протокол HTTP предполагает использование клиент-серверной структуры передачи данных.

Как правило, передача данных по протоколу HTTP осуществляется через TCP/IP-соединения и обычно использует TCP-порт 80.

3

Структура протокола

Стартовая строка — определяет тип сообщения.

Заголовки — характеризуют тело сообщения, параметры передачи и прочие сведения.

Тело сообщения — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.

4

Стартовая строка запроса

Метод URI HTTP/Версия

5

Метод

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

GET: получить доступ к существующему ресурсу. В URL перечислена вся необходимая информация, чтобы сервер смог найти и вернуть в качестве ответа искомый ресурс.

POST: используется для создания нового ресурса. POST запрос обычно содержит в себе всю нужную информацию для создания нового ресурса.

PUT: обновить текущий ресурс. PUT запрос содержит обновляемые данные.

DELETE: служит для удаления существующего ресурса.

6

URI

 Определяет путь к запрашиваемому документу.

7

Версия

Определяет, в соответствии с какой версией стандарта HTTP составлен запрос. Указывается как два числа, разделённых точкой.

8

Заголовки запроса

Строка в HTTP-сообщении, содержащая разделённую двоеточием пару вида «параметр-значение».

9

Группы заголовков

General Headers — должны включаться в любое сообщение клиента и сервера.

Request Headers — используются только в запросах клиента.

Response Headers — присутствуют только в ответах сервера.

Entity Headers — сопровождают каждую сущность сообщения.

10

Тело сообщения

Сами данные, которые передаются в запросе. 

Все ответы содержат тело сообщения, возможно нулевой длины, кроме ответов на запрос методом HEAD и ответов с кодами статуса 1xx, 204 (No Content), и 304 (Not Modified).

11

Стартовая строка ответа

HTTP/ВерсияКод состояния Пояснение

12

Коды состояния

Три цифры, которые определяют результат совершения запроса.

1xx: Информационные сообщения2xx: Сообщения об успехе3xx: Перенаправление4xx: Клиентские ошибки5xx: Ошибки сервера

13

Пояснение

Текстовое пояснение к коду ответа, предназначено для упрощения чтения ответа человеком

14

Заголовки ответа

15

Кэширование

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

16

HTTP заголовки для клиентского кэширования

Заголовок ответа Last-modified и заголовок запроса if-Modified-Since.

Заголовок ответа Etag и заголовок запроса If-None-Match.

HTTP-заголовок Expired.HTTP-заголовки Cache-Control

max-age=[секунды] s-maxage=[секунды] no-cache no-store public private

17

Советы

Используйте URL-адреса последовательно.Используйте общую библиотеку

изображений.Храните в кэше изображения и страницы,

которые редко изменяются.Дайте кэшу возможность распознавать

страницы, которые обновляются регулярно.

18

Клиент-серверная модель взаимодействия

19

Основные понятия

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

Программа-сервер же обрабатывает запросы клиента и выдает ответы. 

20

Разновидности архитектуры клиент-сервер

«Архитектура с толстым клиентом» - логика представления данных и бизнес-логика размещаются на клиенте, логикой хранения и накопления данных на сервере.

«Архитектура с тонким клиентом» - программа-клиент реализует лишь графический интерфейс пользователя и передает/принимает запросы, а вся бизнес-логика выполняется сервером.

21

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

Для идентификации машины в сети используется протокол IP и 4х байтный уникальный идентификатор машины - ip адрес. Далее, для идентификации приложения, TCP добавляет понятие порта.

В TCP пакетах указываются порт источника (клиента) и порт назначения (сервера).

22

Клиент-серверные технологии

Web-серверы - представляют доступ к гипертекстовым документам по протоколу HTTP, поддерживают расширенные возможности, в частности работу с бинарными файлами (изображения, мультимедиа и т.п.).

Серверы приложений - для централизованного решения прикладных задач в некоторой предметной области.

Серверы баз данных - используются для обработки пользовательских запросов на языке SQL. При этом СУБД находится на сервере, к которому и подключаются клиентские приложения.

Почтовые серверы - представляют услуги по отправке и получению электронных почтовых сообщений.

23

Servlet API

24

Общие сведения

Сервлеты - это программы на Java, которые работают на серверном компьютере. Их выполнение инициируется Web-сервером или сервером приложений по запросу клиента.

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

25

Последовательность выполнения сервлета

Клиент посылает запрос Web-серверу или серверу приложений.

Web-сервер или сервер приложений инициирует выполнение сервлета, передавая ему необходимые данные.

Сервлет выполняется (как правило, на виртуальной Java-машине сервера), и по окончании работы передает результаты (ответ на исходный запрос) вызвавшему его серверу. Обмен данными между сервлетом и сервером происходит при помощи специального Java-API (его главные составляющие это классы HttpServletRequest для передачи запроса и HttpServletResponse для ответа).

Сервер отдает полученные от сервлета данные клиенту.

26

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

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

Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletContext для этого сервлета и внедряет его через init() метод. Это и есть место где сервлет класс преобразуется из обычного класса в сервлет.

Обработка запросов — после инициализации сервлет готов к обработке запросов.

Удаление из Service — когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова destroy() метода.

27

ServletConfig и ServletContext

Интерфейс javax.servlet.ServletConfig используется для передачи конфигурационной информации сервлету.

Интерфейс javax.servlet.ServletContext предоставляет доступ к параметрам веб приложения сервлету.

ServletConfig является уникальным объектом для каждого сервлета, в то время как ServletContext уникальный для всего приложения.

ServletConfig используется для предоставления параметров инициализации сервлету, а ServletContext для предоставления параметров инициализации приложения для всех сервлетов.

Нет возможности устанавливать атрибуты в объекте ServletConfig, в то время как можно установить атрибуты в объекте ServletContext, которые будут доступны другим сервлетам.

28

Отличия методов forward() и sendRedirect()

RequestDispatcher forward() используется для проброски того же самого запроса к другому ресурсу, в то время как ServletResponse sendRedirect() возвращает ответ клиенту с status code 302 (redirect) с ссылкой для отправки запроса. Посылается полностью новый запрос.

forward() обрабатывается внутри контейнера, а sendRedirect() обрабатывается браузером.

Необходимо использовать forward() для организации доступа внутри одного и того же приложения, т.к. он быстрее sendRedirect().

В методе forward() браузер не знает о фактически обрабатываемом ресурсе и URL в строке остается прежним. В sendRedirect() методе URL адрес изменяется на пробрасываемый ресурс.

29

Спасибо за внимание!

top related