- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

Глава 6. Общий интерфейс и формы языка



Общий шлюзовой интерфейс (Common Gateway Interface) позволяет работать с данными сервера Web в интерактивном режиме. Сервер Web через CGI запускает поисковую программу и пересылает обработанные данные назад. Сама программа CGI хранится в каталоге CGI-BIN. Это означает, что файл из каталога CGI-BIN всегда исполняемый файл. Если CGI- программа, например, взаимодействует с системой управления базой данных, то пользователь может получать некоторую интересующую его информацию в интерактивном режиме.

Это тривиально, но факт: CGI-программы создаются посредством CGI. Код программы пишется, как правило, на языке описания сценариев Perl. Perl является интерпретируемым языком, интерпретатор которого соответствует операционной системе.

Передача данных от сервера к программе CGI осуществляется сервером через командную строку и переменные окружения.

Таким образом, сервер через общий шлюзовой интерфейс запускает программу CGI и пересылает ей вводимые пользователем данные. Сами данные вводятся через так называемые формы HTML.

Форма представляет собой гипертекстовую страницу с одним или несколькими полями данных и специальной кнопкой для передачи введенной информации.

Как и код любого гипертекстового документа, код формы начинается с тэга FORM ACTION = /SGI-BIN/EXAMPLE.PLи заканчивается тэгом /FORM.

ACTION

Аргумент ACTION — это URL программы CGI, то есть /SGI-BIN/EXAMPLE.PL.

METHOD

Метод, используемый для запроса данных.

Этот параметр задает режим передачи данных из формы в программу CGI.

Основные режимы передачи — GET, HEADи POST. Программа CGI должна поддерживать один из этих режимов, иначе обработки данных не произойдет.

В режиме GETданные входят через URLв строку запроса. Например, если программа обработки данных BOB.PLлежит в каталоге CGI-BIN, то запрос HTML пойдет на сервер через ACTIONследующим образом:

FORM ACTION=/CGI-BIN/BOB.PL METHOD=GET

Теперь сервер знает, где находится программа BOB.PL, поэтому он ее запустит в режиме GET.

Программы CGI получают данные от переменных окружения и посылают выходные данные через общий шлюзовой интерфейс обратно пользователю. Например, после ввода тэга A HREF=BOB.HTMLна сервер пойдет запрос GET /BOB.HTML. Заголовок GETопределяет получение документа BOB.HTMLв корневом каталоге сервера.

Относительно аргумента POST

CGI реализован в программах, поддерживающих Unix и некоторые приложения Windows. CGI для Windows реализуется лишь в том случае, если сервер Web способен декодировать данные тех форм HTML, которые пересылаются в режиме POST. Это можно сделать двумя способами:

URL-Encoded. Данные формы пересылаются на сервер в виде HTML.

Multipart Form Data. Данные формы пересылаются на сервер в виде MIME-сообщения.

INPUT TYPE=TEXT

Поместить в форму текстовое поле данных.

NAME=NAME

Определить имя текстового поля данных NAME.

MXLENGTH=NUMBER

Размер текстового поля данных. Вместо NUMBER вы можете ввести целое число.

RADIO

Определить кнопку переключения.

NAME=PRODTYPE

Определить логическое поле PRODTYPE.

INPUT TYPE=CHECKBOX

Определить флажок для протокола передачи.

ACCEPT

Метод, используемый для интерпретации пересылаемых файлов. Файлы могут пересылаться в виде ASCII или HTML.

Количество заголовков ACCEPTсоответствует типам данных MIME (Multipurpose Internet Mail Extensions). Заголовок ACCEPT: TYPE/SUB-TYPE {parameters}пересылается как значение параметра ACCEPT. Каждый тип данных имеет собственный параметр ACCEPT.

Глава 7. Фреймы

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

Создание фрейма

Создание фрейма осуществляется через тэг <FRAMESET>. Тэг <BODY>в этом случае не используется.

Тэг </FRAMESET>заканчивает выполнение кода после тэга <FRAMESET>.

Далее идет стандартное применение HTML.

Описание фрейма

Тэг <FRAME SRC="Name1">позволяет описать первый фрейм, т.е. присвоить имя гипертекстовому документу. Второй фрейм описывается тэгом <FRAME SRC="Name2" NAME="Main">.

Если обозреватель не поддерживает фреймы

Если обозреватель того или иного пользователя не поддерживает фреймы, то между тэгом <NOFRAMES>и тэгом </NOFRAMES>заносится текст, который распознает обозреватель.

Свойства фреймов

Тэг <FRAMESET COL="N1, N2,..>позволяет определить количество фреймов и задать размер фреймов в процентах от размера окна обозревателя или зафиксировать эти размеры в пикселах.

Тэг с большими возможностями

Тэг <FRAME>, имеющий самое большое количество атрибутов, позволяет настроить свойства фрейма. Ниже описываются эти атрибуты.

NAME=

Имя фрейма.

MARGINWIDTH=

Горизонтальный отступ (от 1 до 6) между фреймом и его границей.

MARGINHEIGHT=

Вертикальный отступ (от 1 до 6) между фреймом и его границей.

SCROLLING=

Прокрутка фрейма. Податрибут SCROLLING=YESпозволяет создать полосы прокрутки, SCROLLING=NO— указывает обозревателя, что полосы прокрутки отсутствуют в данном фрейме, а податрибут SCROLLING=AUTOпозволяет отображать полосы прокрутки в зависимости от свойств обозревателя.

NORESIZE

Фиксированный размер фрейма.

SRC=

Задать гипертекстовый документ для этого фрейма.

TARGET=Name

Открыть ссылку во фрейме с именем Name.

Используя фреймы, позволяющие разбивать Web-страницы на скроллируемые подокна, вы можете значительно улучшить внешний вид и функциональность информационных систем и Web-приложений. Каждое подокно, или фрейм, может иметь ряд свойств.

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

Синтаксис фреймов

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

<HTML>

<HEAD>...</HEAD> <FRAMESET>...</FRAMESET> </HTML>

Однако, фрейм-документ является специфичным видом HTML-документа, поскольку не содержит элемента BODYи какой-либо информационной нагрузки соответственно. Он описывает только фреймы, которые будут содержать информацию (кроме случая двойного документа).

Представим общий синтаксис фреймов:

<FRAMESET COLS="value" | ROWS="value">

<FRAME SRC="url1">

<FRAME ...>

. . .

</FRAMESET>

Общий контейнер FRAMESETописывает все фреймы, на которые делится экран. Вы можете разделить экран на несколько вертикальных или несколько горизонтальных фреймов. Тэг FRAMEпрописывает каждый фрейм в отдельности. Рассмотрим более детально каждый компонент.

FRAMESET

<FRAMESET [COLS="value" | ROWS="value"]>

Тэг <FRAMESET>имеет завершающий тэг </FRAMESET>. Все, что может находиться между этими двумя тэгами, это тэг <FRAME>, вложенные тэги <FRAMESET>и </FRAMESET>, а также контейнер из тэгов <NOFRAMES>, который позволяет строить двойные документы для браузеров, поддерживающих фреймы и не поддерживающих фреймы.

Данный тэг имеет два взаимоисключающих параметра: ROWSи COLS.

ROWS

ROWS="список-определений-горизонтальных-подокон"

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

Синтаксис используемых видов описания величин подокон:

Value

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

value%

Значение величины подокна в процентах от 1 до 100. Если общая сумма процентов описываемых подокон превышает 100, то размеры всех фреймов пропорционально уменьшаются до суммы 100%. Если, соответственно, сумма меньше 100, то размеры пропорционально увеличиваются.

value*

Вообще говоря, значение value в данном описании является необязательным. Символ «*» указывает на то, что все оставшееся место будет принадлежать данному фрейму. Если указывается два или более фрейма с описанием «*» (например «*,*»), то оставшееся пространство делится поровну между этими фреймами.

Если перед звездочкой стоит цифра, то она указывает пропорцию для данного фрейма (во сколько раз од будет больше аналогично описанного чистой звездочкой). Например, описание «3*,*,*», говорит, что будет создано три фрейма с размерами 3/5 свободного пространства для первого фрейма и по 1/5 для двух других.

COLS

COLS="список-определений-горизонтальных-подокон"

То же самое, что и ROWS, но делит окно по вертикали, а не по горизонтали.

Внимание! Совместное использование данных параметров может привести к непредсказуемым результатам. Например, строка:

<FRAMESET ROWS="50%,50%" COLS "50%,50%">

может привести к ошибочной ситуации.

Примеры:

<FRAMESET COLS="50,*,50">

описывает три фрейма, два по 50 точек справа и слева, и один внутри этих полосок.

<FRAMESET ROWS="20%,3*,*">

описывает три фрейма, первый из которых занимает 20% площади сверху экрана, второй 3/4 оставшегося от первого фрейма места (т.е. 60% всей площади окна), а последний 1/4 (т.е. 20% всей площади окна).

<FRAMESET ROWS="*,60%,*">

аналогично предыдущему примеру.

Тэги <FRAMESET>могут быть вложенными, т.е. например:

<FRAMESET ROWS="50%,50%"> <FRAMESET COLS="*,*" </FRAMESET> </FRAMESET>

FRAME

<FRAME SRC="url" [NAME="frame_name"] [MARGINWIDTH="nw"] [MARGIN-HEIGHT="nh"] [SCROLLING=yes|no|auto] [NORESIZE]> Данный тэг определяет фрейм внутри контейнера FRAMESET. SRC="url"

Описывает URL документа, который будет отображен внутри данного фрейма. Если он отсутствует, то будет отображен пустой фрейм.

NAME="frame_name"

Данный параметр описывает имя фрейма. Имя фрейма может быть использовано для определения действия с данным фреймом из другого HTML-документа или фрейма (как правило, из соседнего фрейма этого же документа). Имя обязательно должно начинаться с символа. Содержимое поименованных фреймов может быть задействовано из других документов при помощи специального атрибута TARGET.

MARGINWIDTH="value"

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

MARGINHEIGHT="value"

То же самое, что и MARGINWIDTH, но для верхних и нижних величин разделительных полос.

SCROLLING="yes | no | auto"

Этот атрибут позволяет задавать наличие полос прокрутки у фрейма. Параметр yes указывает, что полосы прокрутки будут в любом случае присутствовать у фрейма, параметр no наоборот, что полос прокрутки не будет. Auto определяет полосы прокрутки только при их необходимости (значение по умолчанию).

NORESIZE

Данный атрибут позволяет создавать фреймы без возможности изменения размеров. По умолчанию, размер фрейма можно изменить при помощи мыши так же просто, как и размер окна Windows. NORESIZEотменяет данную возможность. Если у одного фрейма установлен атрибут NORESIZE, то у соседних фреймов тоже не может быть изменен размер со стороны данного.

NOFRAMES

Данный тэг используется в случае, если вы создаете документ, который может просматриваться как браузерами, поддерживающими фреймы, так и браузерами, их не поддерживающими. Данный тэг помещается внутри контейнера FRAMESET, а все, что находится внутри тэгов <NOFRAMES>и </NOFRAMES>игнорируется браузерами, поддерживающими фреймы.

Рассмотрим реализацию фреймов для подобного разбиения окна:

<FRAMESET ROWS="*,*">

<NOFRAMES>

<H1>Ваша версия WEB-браузера не поддерживает фреймы!</H1>

</NOFRAMES>

<FRAMESET COLS="65%,35%">

<FRAME SRC="link1.html">

<FRAME SRC="link2.html">

</FRAMESET>

<FRAMESET COLS="*,40%,*">

<FRAME SRC="link3.html">

<FRAME SRC="link4.html">

<FRAME SRC="link5.html">

</FRAMESET>

</FRAMESET>

Глава 8.Планирование и взаимодействие фреймов

С появлением фреймов сразу возникает вопрос: «А как сделать так, чтобы нажимая на ссылку в одном фрейме инициировать появление информации в другом?»

Ответом на данный вопрос является планирование взаимодействия фреймов (далее — планирование). Каждый фрейм может иметь собственное имя, определяемое параметром NAMEпри описании данного фрейма. Существует, также, специальный атрибут — TARGET, позволяющий определять, к какому фрейму относится та или иная операция. Формат данного атрибута следующий:

TARGET="windows_name"

Данный атрибут может встречаться внутри различных тэгов:

TARGET в тэге A

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

<A HREF="mydoc.html" TARGET="Frame1"> Переход в фрейм 1 </A>

TARGET в тэге BASE

Размещение TARGETв тэге BASEпозволит вам не указывать при описании каждой ссылки фрейм-приемник документов, вызываемых по ссылкам. Это очень удобно, если в одном фрейме у вас находится меню, а в другой — выводится информация. Например:

Документ 1

<FRAMESET ROWS="20,*">

<FRAME SRC="doc2.htm" NAME="Frame1">

<FRAME SRC="doc3.htm" NAME="Frame2">

</FRAMESET>

Документ 2

<HTML>

<HEAD>

<BASE TARGET="Frame2">

</HEAD>

<BODY>

<A HREF="url1"> Первая часть</A>

<A HREF="url2"> Вторая часть</A>

</BODY>

</HTML>

TARGET в тэге AREA

Также можно включать тэг TARGETв описание ссылки при создании карты изображения.

Например:

<AREA SHAPE="circle" COORDS="100,100,50" HREF="http://www.softex-press.com" TARGET="Frame1">

TARGET в тэге FORM

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

<FORM ACTION="url" TARGET="window_name">

Внимание! Имя окна (фрейма) в параметре TARGETдолжно начинаться с латинской буквы или цифры. Также необходимо помнить, что существуют зарезервированные имена для разрешения специальных ситуаций.