Пакет Web - Oracle - Web (WOW)

  1. Глава 7. Використання пакета Web - Oracle -Web (WOW) Євген Фаддеенков 7.1 Вступ 7.2 Призначення...
  2. 7.2 Призначення і схема роботи
  3. 7.3 Склад
  4. 7.4 Установка
  5. етап I
  6. етап II
  7. етап III
  8. 7.5 Використання
  9. 7.6 Специфікація процедур пакету htp

Глава 7. Використання пакета 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 Users Guide and Reference". Інформацію про основи адміністрування сервера Oracle можна отримати з цієї ж документації, книга "Oracle7 Server Administration Guide".

Пакет 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).

7-2)

Пакет htp містить процедури і функції, що полегшують формування HTML - документа. Пакет htf містить опис різних констант і функцій, використовуваних при формуванні HTML - документів.

7.4 Установка

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

  1. операційна система сімейства Unix;
  2. WWW - сервер;
  3. сервер баз даних 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.

  1. Створити користувача, через якого WOW буде здійснювати доступ до даних і виконання робочих процедур. Зазвичай використовується ім'я WWW.
  2. Створити з під вищезгаданого користувача всі необхідні структури даних і приклади. Для цього необхідно виконати наступні 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:

  1. ORACLE_HOME - відповідно до параметром ORACLE_HOME Вашого сервера Oracle або стека SQL * Net;
  2. TWO_TASK - відповідно до параметром TWO_TASK клієнтської частини Вашого сервера Oracle;
  3. 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:

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

відбувається наступний ланцюжок дій (див. Мал. 7-3 ):

  1. WWW - сервер інтерпретує це звернення як запуск CGI - програми wow.win.
  2. Програма wow.win інтерпретує параметри як виклик процедури test пакету example з параметром answer мають значення no, створеної у схемі WWW сервера Oracle.
  3. Сервер Oracle виконує цю процедуру і всі процедури і функції, що викликаються з неї. Вихідні дані, що представляють динамічно створений HTML - документ, передаються програмі wow.win.
  4. Програма wow.win перекодовує вихідний документ в кодування Microsoft CodePage 1251, використовувану в Windows - додатках, і передає його WWW - сервера.
  5. WWW - сервер повертає створений документ, як результат запиту, WWW - клієнта.

URL, який звертається до процедури PL / SQL повинен бути побудований за певними правилами і містити ряд елементів:

  1. Покажчик на модуль пакета WOW, що знаходиться в каталозі CGI - програм. Розширення програми wow - .koi8, .win, .iso, .alt визначає кодування WWW - клієнта:
    • ЯКІ-8
    • Microsoft Code Page 1251
    • ISO 8859-5
    • Microsoft Code Page 866

наприклад:
http://www.cnit.nsu.ru/cgi-bin/wow.win

  1. Ім'я процедури PL / SQL, до якої відбувається звернення. Модулі пакету використовують схему та реєстраційні дані користувача www БД Oracle. Таким чином, викликається PL / SQL - процедура повинна бути доступна користувачеві www на виконання. Якщо процедура (test) створена прямо у схемі www, необхідно просто вказати її ім'я:

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

Якщо процедура входить до складу пакету (example), створеного в схемі www, необхідно додати ім'я пакету і ім'я процедури:

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

Коли пакет створений в іншій схемі Oracle, необхідно вказувати і ім'я схеми. Наприклад, для схеми fancy отримаємо:

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

Користувач www повинен мати права на виконання цієї процедури, явно надані оператором GRANT мови SQL.

  1. Після імені процедури, через роздільник '?', Починають перераховуватися параметри процедури і їх значення у вигляді пар:

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

між собою, різні параметри поділяються амперсандом '&':

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

Назва параметра має збігатися з назвою параметра викликається процедури. Число параметрів має в точності відповідати числу параметрів процедури. Якщо хоча б одна з цих вимог не дотримано, Ви отримаєте повідомлення про помилку. Порядок вказівки параметрів значення не має. Великі і маленькі букви в назві параметрів рівнозначні.

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

приклад:
http://www.cnit.nsu.ru/cgi-bin/wow.win/example.test?answer=no

Виходячи з описаного механізму роботи пакета WOW можна сформулювати основні вимоги до PL / SQL - процедурам, що обробляє запити від WWW - сервера.

  1. Всі вхідні змінні, що передаються через WOW в процедуру завжди мають тип varchar2. Якщо Ви хочете використовувати будь - якої іншої тип даних, необхідно використовувати функції перетворення з varchar2.
  2. У пакеті 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>
<FORM ACTION = "http://www.cnit.nsu.ru/cgi-bin/wow.win/example.test">
Введіть відповідь: <INPUT NAME = "answer">
<INPUT VALUE = "Знайти" TYPE = "SUBMIT">
</ FORM>
</ BODY>
</ HTML>

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

procedure 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 - закінчення тексту фіксованої. [ назад ] [ зміст ] [ вперед ]

Спонсори:

Хостинг:



Test?
Після імені процедури, через роздільник '?
Test?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: