Волгоградский государственный университет
Опубликован: 02.03.2009 | Доступ: свободный | Студентов: 1513 / 186 | Оценка: 4.20 / 4.03 | Длительность: 16:55:00
Лекция 3:

DHTML

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Объектная модель документа

Объектная модель документа (Document Object ModelDOM) связывает в единое целое HTML, язык сценариев и каскадные таблицы стилей, предоставляя разработчикам Web-документов инструмент с совершенно новыми качествами - динамический HTML. DOM является интерфейсом прикладного программирования (API) для документов HTML. Она определяет логическую структуру документа и способ доступа и манипулирования составляющими документ элементами. Все, что определено в документе тэгами языка разметки страниц, становится доступным для изменения, удаления и добавления. Программист может создавать документы, свободно перемещаться по их структуре и добавлять, изменять или удалять элементы и/или их содержимое.

Internet Explorer 5.0 полностью реализует объектную модель документа, совместимую с объектной моделью DHTML.

Структура документа

В объектной модели документа любой документ представляется в виде логической древовидной структуры.

Например, следующий фрагмент документа HTML:

<body>
<p id="p1"> В блоковый элемент, каким является абзац, можно добавлять 
<b id="b1"> Встраиваемые элементы</b> и даже другие блоковые элементы 
<img id="imgl" src="my.gif"/ alt="my picture"/>
</p>
<img id="img2" src="my1.gif" alt="my picture1"/>
</body>

будет представлен в виде логической структуры, приведенной на рис. 3.1.

Логическая структура фрагмента документа

Рис. 3.1. Логическая структура фрагмента документа

Функции объектной модели документа

Объектная модель документов определяет:

  1. интерфейсы и объекты, используемые для представления документа и манипулирования с ним;
  2. семантику (смысл) этих интерфейсов и объектов, включая и поведение, и параметры;
  3. "родственные" связи и взаимодействие между этими интерфейсами и объектами.

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

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

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

В объектной модели DHTML с каждым элементом страницы можно связать определенное действие пользователя: щелчок кнопкой мыши, нажатие клавиши клавиатуры, перемещение в области элемента курсора мыши и т. д. Эта технология основана на фундаментальном понятии события в операционных системах с графическим интерфейсом пользователя. Каждое действие пользователя является причиной возникновения сообщения в операционной системе, которые представляются объектами в объектной модели DHTML. Свойства объектов-событий можно использовать во встраиваемых сценариях для получения информации о событии.

Cookie

Проблема HTTP-соединения

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

Cookie - это информация, которая хранится в браузере и каждый раз передается от клиента серверу вместе с запросом и другими заголовками (HTTP Request Headers). Таким образом, при последующих запросах сервер может получить значения переменных, установленные на посещенных ранее страницах.

Используя cookie, можно эмулировать сессию по HTTP протоколу. Принцип эмуляции сессии следующий: на первом запросе выдается соотвествующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и соответствующим образом обрабатывается.

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

Сервер может считывать содержащуюся в cookies информацию и на основании ее анализа совершать те или иные действия. Например, в случае авторизованного доступа к чему либо через WWW в cookies сохраняется login и password в течение сессии, что позволяет пользователю не вводить их снова при запросах каждого документа, защищенного паролем.

Назначение cookie

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

Еще одна распространенная область использования cookies - при настройке индивидуального профиля каждого зарегистрированного пользователя.

Другая область - использование механизма cookie в рекламном бизнесе. Cookie используются для определения целевой аудитории, например, по географическому положению пользователей, отслеживания интересов пользователей, учета количества показов и проходов сквозь баннеры.

Формат cookie

Полное описание поля Set-Cookie HTTP заголовка:

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
Минимальное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: NAME=VALUE;

Set-Cookie -заголовок включает выбранный Set-Cookie:, за которым следует перечень одной или более записей. Каждая запись начинается с пары NAME=VALUE, за которыми следуют ноль или больше пар "атрибут-значение", разделенных точками с запятой. Синтаксис для пар атрибут-значение приведен выше. Пара NAME=VALUE должна быть самой первой в объявлении записи. Все другие могут следовать в любом порядке. Стандарт не предусматривает поведение при неоднократном использовании одной и той же пары атрибут-значение.

expires=DATE - время хранения cookie, т.е. вместо DATE должна стоять дата в формате Wdy, DD-Mon-YYYY HH:MM:SS GMT, после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия браузера. Использование expires не гарантирует сохранность cookie в течение заданного периода времени, поскольку браузер может удалить запись вследствие нехватки выделенного места или каких-либо других лимитов.

domain=DOMAIN_NAME - домен, для которого значение cookie действительно.

path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значание cookie. Например, указание path=/win приведет к тому, что значение cookie будет действительно для множества документов в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml. Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено cookie.

secure - если стоит такой маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL). Если этот маркер не указан, то информация пересылается обычным способом.

Значение записи устанавливается тремя способами:

  1. веб-сервером (при включении соответствующих настроек);
  2. через заголовки ответа CGI-приложения (например Perl, PHP, C, Sh);
  3. серез клиентский скрипт (javascript ,vbscript).

Когда запрашивается документ с HTTP сервера, браузер проверяет свои cookie на предмет соответствия домену сервера и прочей информации. В случае если найдены удовлетворяющие всем условиям значения cookie браузер посылает их серверу в виде пары имя/значение:

Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...

В случае если cookie принимает новое значение при имеющемся уже в браузере cookie с совпадающими NAME, domain и path, старое значение заменяется новым. В остальных случаях новые cookies добавляются.

< Лекция 2 || Лекция 3: 123 || Лекция 4 >