- •Разработка приложений для Web-сервера (без работы с бд)
- •Цель работы
- •Содержательная и формальная постановки задачи
- •Содержательная постановка задачи
- •Формальная постановка задачи
- •Языки разметки, программирования и каскадные таблицы стилей
- •Протокол передачи данных
- •Подходы к построению интерфейсов web-приложений
- •Структура решения
- •Генерация html-страниц
- •Обмен данными между клиентом и сервером
- •Реализация логики приложения
- •Обзор и анализ методов решения
- •Генерация html-страниц
- •Хранение данных на сервере и доступ к ним
- •Обмен данными между клиентом и сервером
- •Реализация логики приложения
- •Описание реализации применяемых методов
- •Хранение данных на сервере и доступ к ним, используемые переменные
- •Укрупненный алгоритм
- •Определить, свободен ли данный логин
- •Определить, совпадают ли логин и пароль с учетной записью
- •Создание новой учетной записи
- •Сохранение в файл новой записи
- •Редактирование записей
- •Удаление записей
- •Реализация логики приложения
- •Укрупненный алгоритм
- •Регистрация пользователя
- •Используемые функции и конструкции языка
- •Структура файлов
- •Руководство пользователя
Протокол передачи данных
HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов в формате HTML, в настоящий момент используется для передачи произвольных данных). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.
HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов.
В отличие от многих других протоколов, HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ». Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами (например, «куки» на стороне клиента, «сессии» на стороне сервера). Браузер, посылающий запросы, может отслеживать задержки ответов. Сервер может хранить IP-адреса и заголовки запросов последних клиентов. Однако сам протокол не осведомлён о предыдущих запросах и ответах, в нём не предусмотрена внутренняя поддержка состояния, к нему не предъявляются такие требования.
Метод HTTP (англ. HTTP Method) — последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. Обычно метод представляет собой короткое английское слово, записанное заглавными буквами. Обратите внимание, что название метода чувствительно к регистру.
Каждый сервер обязан поддерживать как минимум методы GET и HEAD. Если сервер не распознал указанный клиентом метод, то он должен вернуть статус 501 (Not Implemented). Если серверу метод известен, но он неприменим к конкретному ресурсу, то возвращается сообщение с кодом 405 (Method Not Allowed). В обоих случаях серверу следует включить в сообщение ответа заголовок Allow со списком поддерживаемых методов.
Кроме методов GET и HEAD, часто применяется метод POST. Он применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер.
Подходы к построению интерфейсов web-приложений
Классический подход к построению web-приложения заключается в использовании HTML-форм.
Теги <form> и </form> задают начало и конец формы. Начинающий форму тег <form> содержит два атрибута: action и method. Атрибут action содержит адрес URL сценария, который должен быть вызван для обработки сценария. Атрибут method указывает браузеру, какой вид HTTP запроса необходимо использовать для отправки формы; возможны значения POST и GET.
Тег <form> обязательно должен содержать элемент <input>. Он должен содержать атрибут type, установленный в значение "submit". При нажатии на этот элемент - кнопку - он инициирует событие onsubmit, которое запускает механизм отправки HTTP-запроса на сервер.
AJAX (от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов web-приложений, заключающийся в «фоновом» обмене данными браузера с web-сервером. В результате, при обновлении данных web-страница не перезагружается полностью, и web-приложения становятся быстрее и удобнее.
AJAX — не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:
использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, с использованием XMLHttpRequest (основной объект);
использование DHTML для динамического изменения содержания страницы;
CSS, DOM и JavaScript — составляют DHTML (англ. Dynamic HTML). DOM (от англ. Document Object Model — «объектная модель документа») — это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML, XHTML и XML-документов, а также изменять содержимое, структуру и оформление таких документов.
Сравнение стандартного подхода и AJAX
В классической модели веб-приложения:
Пользователь заходит на веб-страницу и нажимает на какой-нибудь её элемент.
Браузер формирует и отправляет запрос серверу.
В ответ сервер генерирует совершенно новую веб-страницу и отправляет её браузеру и т. д. После чего браузер полностью перезагружает всю страницу.
При использовании AJAX:
Пользователь заходит на веб-страницу и нажимает на какой-нибудь её элемент.
Скрипт (на языке JavaScript) определяет, какая информация необходима для обновления страницы.
Браузер отправляет соответствующий запрос на сервер.
Сервер возвращает только ту часть документа, на которую пришёл запрос.
Скрипт вносит изменения с учётом полученной информации (без полной перезагрузки страницы).
Использование AJAX экономит трафик при работе с web-приложениями, уменьшает нагрузку на сервер, ускоряет реакцию интерфейса и предоставляет почти безграничные возможности для интерактивной обработки. Однако и у этой технологии есть минусы. Например, для работы AJAX необходим включеный JavaScript браузере и динамически сгенерированные web-страницы недоступны для поисковых систем.
