Тема 15. Клиент-серверное взаимодействие
Цель: формирование у студентов знаний о клиент-серверном взаимодействии и навыков разработки HTML-контента на сервере.
План занятия:
1. Изучить теоретические сведения.
2. Выполнить практическое задание по лабораторной работе.
3. Оформить отчёт и ответить на контрольные вопросы.
Теоретические сведения
Веб-приложения используют клиент-серверную модель взаимодействия. Клиент-серверное взаимодействие обеспечивает необходимый обмен информацией между клиентским устройством и сервером и работает с целью доставки информации как от сервера клиенту (например, доставка информации о доступных рейсах в аэропорту), так и от клиента серверу (например, доставка информации о конкретном рейсе, билет на который хочет купить пользователь).
Для веб-приложений, предоставляющих данные в формате HTML с применением таблиц стилей, скриптов на языке JavaScript, изображений, видео, звука, клиент-серверное взаимодействие реализуется с использованием HTTP-протокола (протокола передачи гипертекстовых документов).
HTTP – это текстовый протокол прикладного уровня, в котором единичный факт передачи информации представляет собой специальный запрос, содержащий шапку и тело запроса. Пример такого запроса приведён ниже.
GET http://www.msn.com/ HTTP/1.1 Host: www.msn.com Accept: text/html Accept-Language: en-US User-Agent: Mozilla/5.0 | Запрашиваем данные по адресу /, расположенные на узле www.msn.com, просим ответ прислать в формате text/html на английском языке, передаём имя пользовательской программы Mozilla/5.0 |
В этом случае можно получить такой ответ:
HTTP/1.1 200 OK Content-Length: 309260 Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.5 Date: Wed, 09 Sep 2015 13:50:28 GMT <!DOCTYPE html><html><head . . | Получаем подтверждение от сервера об успешном формировании данных длины 309260 байт в формате text/html и кодировке utf-8. Обслуживающий веб-сервер Microsoft-IIS/8.5, дата 9 сентября 2015 время 13:50. Дальше сами данные. |
Или можно передать данные на сервер. Пример такого запроса приведён ниже.
POST https://profile.tut.by/authorize/ HTTP/1.1 Host: profile.tut.by Content-Length: 52 Content-Type: application/x-www-form-urlencoded login_action=login&login=test&password=test&memory=1 | Передача данных с использованием защищённого канала (https) по адресу profile.tut.by/authorize/ расположенному на узле profile.tut.by Данные длиной 52 байта в формате application/x-www-form-urlencoded Сами данные представляют собой пары ключ-значение: login_actio=login login=test password=test memory=1 |
В качестве ответа, можно получить следующее.
HTTP/1.1 302 Found Server: nginx/1.7.6 Date: Wed, 09 Sep 2015 14:01:52 GMT Content-Type: text/html; charset=windows-1251 Content-Length: 0 Location: http://www.tut.by/?error=login_ Error | Ответ – перенаправление, сервер nginx/1.7.6, дата 9 сентября 2015 14:01, данные в формате text/html в кодировке windows-1251 длиной 0 байт. Адрес перенаправления http://www.tut.by/?error=login_error |
Стандарт HTTP описывает структуру запросов, важной частью которых явзяется Method или Verb (глагол), описывающий намерения пользователя. Основными методами или глаголами являются GET – используется для выражения намерения запроса информации с сервера, как в первом примере, и POST – используется для выражения намерения передачи информации на сервер, как во втором примере.
В случае, если пользователь взаимодействует со статическим сайтом (набором свёрстанных HTML-страниц на веб-сервере) все варианты взаимодействия можно описать методом GET.
Клиент-серверное взаимодействие в этом случае выглядит следующим образом.
1. Клиент отправляет HTTP-запрос на сервер с указанием идентификатора ресурса
2. Сервер принимает запрос от клиента
3. Сервер находит на диске документ, соответствующий идентификатору ресурса
4. Сервер формирует HTTP-ответ клиенту и отадёт ему HTML-документ.
Как правило вместе с HTML-вёрсткой используется язык программирования (например, PHP). Это поволяет имея один-единственный HTML-документ, описать изменения во внутринней структуре этого документа как реакцию приложения на запросы пользователя.
PHP – это интерпретируемый язык программирования. Это означает, что программа-интерпретатор выполняет инструкции, написанные на языке PHP, строчка за строчкой, без каких-либо промежуточных преобразований. Файлы, содержавшие инструкции на языке PHP имеют расширение .php, однако результатом выполнения этих файлов обычно является HTML-документ. Клиент-серверное взаимодействие в этом случае выглядит следующим образом.
1. Клиент отправляет HTTP-запрос на сервер с указанием идентификатора ресурса.
2. Сервер принимает запрос от клиента.
3. Сервер определяет, что запрашиваемый ресурс ассоциирован с интерпретатором PHP.
4. Сервер передаёт управление интерпретатору, сообщая ему детали запроса.
5. Интерпретатор выполняет инструкции, указанные в файле, на который ссылается запрос пользователя, в результате получается HTML-документ.
6. Интерпретатор возвращает HTML-документ серверу.
7. Сервер формирует HTTP-ответ клиенту и отадёт ему HTML-документ.
Для выполнения инструкций на языке PHP нужен PHP-интерпретатор, веб-сервер. Установить все это можно, используя инсталлятор AppServ.
Практическое задание:
1. Установить AppServ http://htmlbook.ru/webserver/appserv
2. Написать программу, динамически генерирующую HTML-страницу по POST-запросу пользователя.
3. Протестировать выполнение программы.
4. Проанализировать полученные результаты. Выделить клиентскую и серверную часть.
Содержание отчета:
1. Цель работы.
2. Программа, динамически генерирующая HTML-страницу по POST-запросу пользователя.
3. Выводы по работе.
Контрольные вопросы:
1. Какую модель взаимодействия использует веб-приложение?
2. Что такое и для чего необходим HTTP-протокол?
3. Что представляет собой клиент-серверное взаимодействие в случае статического сайта?
4. Для чего предназначен язык программирования PHP?
5. Что представляет собой клиент-серверное взаимодействие при программировании серверной логики на PHP?
Дата добавления: 2019-09-30; просмотров: 488;