Реферат: Использование пакета Web - Oracle -Web (WOW)

7.1 Введение

7.2 Назначение и схема работы

7.3 Состав

7.4 Установка

7.5 Использование

7.6 Спецификация процедур пакета htp

7.1 Введение

В данной главе отчета описывается свободно — распространяемое программноеобеспечение — пакет WOW. Для освоения этого материала необходимо знание языкаSQL и его процедурного расширения PL/SQL от фирмы Oracle. Кроме этогонеобходимо знание основ администрирования сервера Oracle. Информацию по PL/SQLВы можете получить из документации по серверу Oracle, книга «PL/SQL UsersGuide and Reference». Информацию об основах администрирования сервераOracle можно получить из этой же документации, книга «Oracle7 Server AdministrationGuide».

Пакет WOW предназначен для использования под ОС Unix.

7.2 Назначение и схема работы

Пакет WOW предназначен для обработки запросов от WWW — сервера (Web -)к SQL — серверу Oracle (-Oracle-) с генерацией динамических HTML- документов (-Web). Разработчик приложений, использующий WOWоперирует только с родным языком Oracle — PL/SQL, являющимся процедурнымрасширением языка SQL. Это обуславливает высокую эффективность разработкиприложений. Обработка созданных приложений непосредственно в сервере Oracleопределяет высокую скорость исполнения приложений.

Основная идея пакета WOW — преобразование запроса к WWW — серверу в вызовопределенной процедуры PL/SQL. В качестве параметров процедуры, используютсяданные из запроса к WWW — серверу. Кроме этого, язык PL/SQL дополняетсяфункциями вывода различных данных в формате HTML. Сфера технологических решенийпакета приведена на рис. 7-1.

/>

7.3 Состав

Структурно, WOW состоит из ряда исполняемых программ, соответствующихспецификации CGI и набора пакетов PL/SQL (см. рис. 7-2).

/>

Пакет htp содержит процедуры и функции, облегчающиеформирование HTML — документа. Пакет htf содержит описаниеразличных констант и функций, используемых при формировании HTML — документов.

7.4 Установка

Для корректной работы пакета необходимо правильно провести процедуруустановки. Пакет WOW требует около 2Mb дискового пространства. На базовомсервере должны быть установлены:

операционная система семейства Unix; WWW — сервер; сервер баз данных Oracle или сетевой стек Oracle SQL*Net с возможностью доступа к удаленному серверу баз данных Oracle. Этап I

В случае, когда пакет поставляется в виде исходных текстов, необходимопроизвести компиляцию и сборку исполняемого модуля wowstub. Присборке wowstub необходимо использовать библиотеки установленного сервера Oracleили сетевого стека SQL*Net. Компиляция и сборка производится утилитой make наосновании данных файла Makefile. Вам необходимо изменить ряд параметровMakefile для настройки на Вашу конфигурацию Oracle и Unix:

ORACLE_HOME — должен совпадать с каталогом, определенным переменной ORACLE_HOME сервера Oracle. DEST_DIR — должен указывать на каталог, хранящий CGI модули Вашего WWW сервера. DOC_ROOT — должен указывать на каталог в котором будет размещена документация по WOW. Каталог должен быть доступен для WWW сервера. Этап II

Независимо от сборки wowstub, необходимо создать ряд структурданных в БД Oracle.

Создать пользователя, через которого WOW будет осуществлять доступ к данным и исполнение рабочих процедур. Обычно используется имя WWW. Создать из под вышеупомянутого пользователя все необходимые структуры данных и примеры. Для этого необходимо исполнить следующие SQL файлы, идущие в дистрибутиве WOW: wow.sql, ht.sql, math.sql, emp.sql, showemp.sql, hanoi.sql. Исполнить эти файлы можно с использованием одной из следующих утилит: SQL*Plus, SQL*DBA, Server Manager, Enterprize Manager. Этап III

Необходимо поместить модуль wowstub в каталог CGI программВашего WWW сервера. Необходимо переопределить ряд параметров файла wow,представляющего собой скрипт sh:

ORACLE_HOME — в соответствии с параметром ORACLE_HOME Вашего сервера Oracle или стека SQL*Net; TWO_TASK — в соответствии с параметром TWO_TASK клиентской части Вашего сервера Oracle; WOW_UID — в соответствии с именем пользователя и его паролем, созданными на этапе II установки.

В случае если Вы используете версию от ЦНИТ НГУ, необходимо отредактироватьвсе 4 файла: wow.win, wow.iso, wow.alt,wow.koi8.

Отредактированный файл wow (все 4 отредактированных файлы при использованииверсии от ЦНИТ НГУ) необходимо поместить в каталог для CGI — программ ВашегоWWW сервера.

7.5 Использование

Рассмотрим простейший пример с использованием пакета WOW. При обращении кWWW — серверу www.cnit.nsu.ru по URL:

www.cnit.nsu.ru/cgi-bin/wow.win/example.test?answer=no

происходит следующая цепочка действий (см. рис. 7-3):

WWW — сервер интерпретирует это обращение как запуск CGI — программы wow.win. Программа wow.win интерпретирует параметры как вызов процедуры test пакета example с параметром answer имеющим значение no, созданной в схеме WWW сервера Oracle. Сервер Oracle исполняет эту процедуру и все процедуры и функции, вызываемые из нее. Выходные данные, представляющие динамически созданный HTML — документ, передаются программе wow.win. Программа wow.win перекодирует выходной документ в кодировку Microsoft CodePage 1251, используемую в Windows — приложениях, и передает его WWW — серверу. WWW — сервер возвращает созданный документ, как результат запроса, WWW — клиенту.

/>

URL, обращающийся к процедуре PL/SQL должен быть построен по определеннымправилам и содержать ряд элементов:

Указатель на модуль пакета WOW, находящийся в каталоге CGI — программ. Расширение программы wow.koi8, .win, .iso, .alt определяет кодировку WWW — клиента: КОИ-8 Microsoft Code Page 1251 ISO 8859-5 Microsoft Code Page 866

Например:
www.cnit.nsu.ru/cgi-bin/wow.win

Имя процедуры PL/SQL, к которой происходит обращение. Модули пакета используют схему и регистрационные данные пользователя www БД Oracle. Таким образом, вызываемая PL/SQL — процедура должна быть доступна пользователю www на исполнение. Если процедура (test) создана прямо в схеме www, необходимо просто указать ее имя:

www.cnit.nsu.ru/cgi-bin/wow.win/test

Если процедура входит в состав пакета (example), созданного всхеме www, необходимо добавить имя пакета и имя процедуры:

www.cnit.nsu.ru/cgi-bin/wow.win/example.test

Когда пакет создан в другой схеме Oracle, необходимо указывать и имя схемы.Например, для схемы fancy получим:

www.cnit.nsu.ru/cgi-bin/wow.win/fancy.example.test

Пользователь www должен иметь права на исполнение этойпроцедуры, явно предоставленные оператором GRANT языка SQL.

После имени процедуры, через разделитель '?', начинают перечисляться параметры процедуры и их значения в виде пар:

<название_параметра> = <значение_параметра>

между собой, различные параметры разделяются амперсандом '&':

<название_параметра1>=<значение_параметра1>&<название_параметра2>=<значение_параметра2>

Название параметра должно совпадать с названием параметра вызываемойпроцедуры. Число параметров должно в точности соответствовать числу параметровпроцедуры. Если хотя бы одно из этих требований не соблюдено, Вы получитесообщение об ошибке. Порядок указания параметров значения не имеет. Большие ималенькие буквы в названии параметров равнозначны.

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

Пример:
www.cnit.nsu.ru/cgi-bin/wow.win/example.test?answer=no

Исходя из описанного механизма работы пакета WOW можно сформулироватьосновные требования к PL/SQL — процедурам, обрабатывающим запросы от WWW — сервера.

Все входные переменные, передающиеся через WOW в процедуру всегда имеют тип varchar2. Если Вы хотите использовать какой — либо другой тип данных, необходимо использовать функции преобразования из varchar2. В пакете htp отсутствуют функции вывода начала и конца HTML — документа. Поскольку многие современные броузеры интерпретируют текст без обрамляющих тегов <HTML>… </HTML> как преформатированный, необходимо прямо задавать эти теги в начале и конце документа.

Пример пакета example:
Create or Replace package example is
procedure test(answer in Varchar2);
end;
/
Create or Replace package body example is
procedure test(answer in Varchar2) is
ответ varchar2(3);
cursor c_man(ans in varchar2) is select Фамилия from Результаты_опроса whereОтвет=ans order by Фамилия;
begin
— Начало документа
htp.p('<HTML>');
— Вывод названия страницы и заголовка
if answer = 'no'
then
ответ:='НЕТ';
htp.htitle('Фамилии людей, ответивших отрицательно');
else
ответ:='ДА';
htp.htitle('Фамилии людей, ответивших положительно');
end if;
htp.olistopen;
— Начало нумерованного списка
for man in c_man(Ответ) loop
— Элемент списка
htp.item(man.Фамилия);
end loop;
— Конец нумерованного списка
htp.olistclose;
— Конец документа
htp.p('</HTML>');
end;
end;
/

При этом подразумевается что в схеме WWW Oracle находится таблица примерноследующей структуры:

Create table Результаты_опроса(Фамилия varchar2(30),
Имя varchar2(14),
Отчество varchar2(20),
Ответ varchar2(3));

Обращаться к пакету WOW можно и из форм HTML. Ниже приведен пример обращенияк тому же пакету example из простейшей формы.

<HTML>
<HEAD>
<TITLE>Тестовая форма</TITLE>
</HEAD>
<BODY>
<H1>Тестовая форма</H1>
<FORMACTION=«www.cnit.nsu.ru/cgi-bin/wow.win/example.test»>
Введите ответ:<INPUT NAME=«answer»>
<INPUT VALUE=«Найти» TYPE=«SUBMIT»>
</FORM>
</BODY>
</HTML>

7.6 Спецификация процедур пакета htpprocedure title(ctitle in varchar2)

— выводит название документа (теги <TITLE>)

procedure htitle(ctitle in varchar2)

— выводит название документа и повторяет его в заголовке первого уровня (теги <TITLE>, <H1>)

procedure header(nsize in integer, cheader in varchar2)

— выводит заголовок уровня nsize (теги <H1><H6>)

procedure url(curl in varchar2, cname in varchar2)

— формирует cname как гипертекстную связь, указывающую на curl (теги <A HREF>).

procedure gif(curl in varchar2)

— включает в документ картинку, путь до которой curl (теги <IMG>).

procedure gif(curl in varchar2, calign in varchar2)

— включает в документ картинку, путь до которой curl с выравниванием, определяемым параметром calign (теги <IMG>).

procedure bold(ctext in varchar2)

— выводит текст ctext жирным шрифтом (теги <B>).

procedure italic(ctext in varchar2)

— выводит текст ctext шрифтом italic (теги <I>)

procedure item(cval in varchar2)

— выводит cval как элемент списка (теги <ITEM>).

procedure formOpen(curl in varchar2)

— создает форму с действием curl (теги <FORM>).

procedure formHidden(cname in varchar2, cvalue in varchar2)

— создает скрытое поле формы для хранения значения cvalue переменной с именем cname.

procedure formPassword(cname in varchar2),
procedure formPassword(cname in varchar2, cvalue in varchar2)

— создает поле формы для ввода значения переменной — пароля с именем cname и значением по умолчанию cvalue.

procedure formField(cname in varchar2, nsize in integer),
procedure formField(cname in varchar2),
procedure formField(cname in varchar2, cvalue in varchar2)

— создает поле формы для ввода значения переменной с именем cname длиной nsize со значением по умолчанию cvalue.

procedure formText(cname in varchar2, nrow in integer, ncol in integer)

— создает многострочное поле формы (длиной ncol, высотой nrow) для ввода значения переменной с именем cname.

procedure formCheckbox(cname in varchar2)

— создает элемент checkbox для ввода значения логической переменной cname.

procedure formRadio(cname in varchar2, cval in varchar2)

— создает элемент radiobutton для ввода одного из значений cval переменной cname.

procedure formSelectOpen(cname in varchar2)

— создает список значений для переменной с именем cname.

procedure formSelectOption(cval in varchar2)

— добавляет значение cval в список значений переменной, описанной в formSelectOpen.

procedure formSelectClose

— заканчивает список значений, открытый formSelectOpen.

procedure formDo(cname in varchar2)

— создает кнопку типа SUBMIT текущей формы с именем cname.

procedure formDo

— создает кнопку типа SUBMIT текущей формы с именем 'Submit'.

procedure formUndo(cname in varchar2)

— создает кнопку типа RESET текущей формы с именем cname.

procedure formUndo

— создает кнопку типа RESET текущей формы с именем 'Reset'.

procedure formClose — закрывает текущую форму.

Процедуры вывода:

procedure print (cbuf in varchar2),
procedure print (dbuf in date),
procedure print (nbuf in number)

— выводят значение различных типов.

Синонимы для процедуры print — p:

procedure p (cbuf in varchar2),
procedure p (dbuf in date),
procedure p (nbuf in number).

Процедуры, выводящие постоянные значения:

procedure line

— разделительная линия (тег <HR>).

procedure para

— начало параграфа (тег <P>).

procedure nl

— перевод строки (тег <BR>).

procedure item

— элемент списка (тег <LI>).

procedure ulistOpen

— начало ненумерованного списка (тег <UL>).

procedure ulistClose

— окончание ненумерованного списка (тег </UL>).

procedure olistOpen

— начало нумерованного списка (тег <OL>).

procedure olistClose

— окончание нумерованного списка (тег </OL>).

procedure dlistOpen

— начало списка определений (тег <DL>).

procedure dlistClose

— окончание списка определений (тег </DL>).

procedure dterm

— термин списка определений (тег <DT>).

procedure ddef

— определение термина (тег <DD>).

procedure preOpen — начало форматированного текста. procedure preClose — окончание форматированного текста.
еще рефераты
Еще работы по информатике, программированию