Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
avs2 - пз.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
306.9 Кб
Скачать
    1. Хранение данных на сервере и доступ к ним

Рассмотрим, какую информацию необходимо хранить на сервере:

  • логины, пароли(обычный пользователь, администратор) всех пользователей приложения,

  • записи пользователей,

Существует два очевидных способа хранения данных:

  1. Файлы. Наиболее простой способ. Однако для поиска в файле, например, строки, соответствующей некоторому критерию, потребуется просмотр всего файла. При внесении изменений, пусть даже незначительных, файл будет перезаписан полностью. Это будет приводить к более медленной работе при увеличении числа пользователей приложения.

  2. База данных. Совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных. Предоставляет мощные средства для создания структуры данных (схема данных) и манипуляции данными (запросы). Требует владения языком SQL (structured query language — «язык структурированных запросов»). Лишена недостатков, характерных для файлов.

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

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

  • определить, свободен ли данный логин,

  • создание новой учетной записи,

  • предоставление данных о всех записях,

  • запись данных,

  • редактирование записи,

  • удаление записи,

Каждая из них связана с одним из четырех действий: добавление, редактирование, удаление, поиск. Так как идет работа с файлами, основными единицами данных будем считать строки и слова. Далее приведены обобщенные алгоритмы этих действий:

Добавление

  1. Открыть файл в режиме для записи

  2. Записать необходимые данные

  3. Закрыть файл

Редактирование

  1. Считать содержимое файла в массив строк

  2. Изменить необходимые строки содержимого

  3. Открыть файл в режиме записи

  4. Записать содержимое в файл

  5. Закрыть файл

Удаление

  1. Считать содержимое файла в массив строк

  2. Удалить необходимые строки содержимого

  3. Открыть файл в режиме записи

  4. Записать содержимое в файл

  5. Закрыть файл

Поиск

  1. Открыть файл для чтения

  2. Пока не достигнут конец файла

    1. Считать строку

    2. Если строка удовлетворяет некоторому критерию

      1. Выполнить необходимые действия

  3. Закрыть файл

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

    1. Обмен данными между клиентом и сервером

Как уже было сказано, существует два подхода к обмену данными между клиентом и сервером:

  1. Стандартный подход. Заключается в использовании HTML-форм. Используются теги:

    • <form> с атрибутами

      • action, указывающим на скрипт-обработчик,

      • method, указывающим на тип HTTP-запроса (GET или POST);

    • <input> c атрибутом

      • type="submit" для отправки запроса;

    • <input> с атрибутами

      • name, указывающим на имя передаваемой переменной,

      • value, указывающей на ее значение.

Отправка запроса происходит при нажатии кнопки типа "submit". Запрос будет отправлен синхронно, поэтому приложение не будет реагировать на действия пользователя, пока не придет ответ от сервера, содержащий новую HTML-страницу. Таким образом, страница будет полностью перезагружена.

  1. Подход, использующий "фоновую" обработку. Наиболее распространенная технология, использующая фоновую обработку - AJAX. К элементам HTML-страницы прикрепляются обработчики событий, определенные в клиентском скрипте на языке JavaScript. При активации некоторого элемента страницы начинает выполняться соответствующий обработчик, в котором происходит следующее:

    • создается объект XMLHttpRequest, инкапсулирующий отправку HTTP-запросов и получение ответов,

    • используя DOM (Document Object Model - «объектная модель документа») для доступа к элементам страницы, клиентский скрипт определяет, какие параметры необходимо отправить серверу для обновления страницы,

    • с помощью объекта XMLHttpRequest запрос к серверу отправляется асинхронно,

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

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

Этот подход более сложен, требует владения дополнительным языком - JavaScript, включенной поддержки JavaScript в браузере клиента. Однако он позволяет снизить нагрузку на сервер и экономить трафик за счет уменьшения объема передаваемых и обрабатываемых данных.

Кроме того, в любом случае необходимо выбрать тип HTTP-запросов. Для передаче параметров, являющихся частью логики приложения, и получения от сервера ответа в виде HTML-документа, используется два типа запросов:

  1. GET. Используется формой по умолчанию. При запросе методом GET данные формы передаются серверу вместе с URL. Знак '?' отделяет строку запроса от собственно URL ресурса, затем следуют имя и значения передаваемых переменных в виде "переменная1=значение1 &переменная2=значение2&...&переменнаяn=значениеn".

Web-серверы, поддерживающие CGI, копируют эти данные в переменную окружения с именем QUERY_STRING. После этого забота о получении данных из переменной окружения и их обработке возлагается на CGI-программу.

Стоит отметить, что длина URL ограничена, а значит ограничено также число переменных и размеры их значений.

  1. POST. Используется тогда, когда это явно указано в атрибуте формы method. В отличие от метода GET, POST помещает данные не в URL, а в тело запроса.

Запрос POST во многом похож на ответ HTTP. Первая строка представляет собой стандартный запрос HTTP, в котором указан метод POST. В ней могут быть необходимые дополнительные заголовки, отделяемые от тела запроса пустой строкой. Тело запроса при использовании метода POST передается программе как стандартный поток ввода.

Используется для передачи файлов.

Ввиду ограничений, установленных в постановке задачи, в качестве способа обмена данными выбрано использование HTML-форм. В качестве типа HTTP-запроса выбран POST, так как в приложении требуется передача файлов, также неразумно было бы передавать логины и пароли пользователей в URL.

Так как при использовании HTML-форм генерация HTTP-запроса и его отправка происходят автоматически, остается только обеспечить, чтобы при верстке:

  • формы ввода данных были заключены внутри тега <form>,

  • внутри формы присутствовал элемент типа submit,

  • атрибуты name и value элемента <input> имели определенные имена и содержали необходимые значения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]