Реферат: HTML и базы данных
<div v:shape="_x0000_s1112">
<img src="/cache/referats/3721/image002.jpg" v:shapes="_x0000_i1025">Кафедра математическойстатистики и эконометрики
Курсовая работа
По курсу:
“Математическая статистика”
“HTMLи базы данных ”
Группа: ДИ 302
Студент: Шеломанов Р.Б.
Студент: Мельников А.А
Руководитель: Шевченко К.К.
Москва 1999
<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">Содержание
TOC o «1-3» Введение. PAGEREF_Toc465077308 h 3
Internet – интеграция технологий PAGEREF_Toc465077309 h 3
Цели и задачи проекта PAGEREF_Toc465077310 h 6
Формы в HTML PAGEREF_Toc465077311 h 7
ISAPI приложения PAGEREF_Toc465077312 h 16
Исходный код ISAPI модуля наязыке Delphi 4 PAGEREF_Toc465077313 h 17
Библиографический список. PAGEREF_Toc465077314 h 24
Введение.
Свою работу я решил офрмить ввиде проекта. В ней кроме теории присутствуетпримерпрограмного проекта, затрудняюсь назвать по другомуобъединение HTMLкода икода языка программирования. Проекта это создание серверсодержащий базу данных товаров «народного потребления», который через Internet- броузер получает от удаленногопользователя запросы, обслуживает их иотправляет ответ пользователю в виде HTMLстраниц.
Сразу оговорюсь, что данная работа расчитана на читателя уже имеющего опыт работы в Интернете,представляющего себе что такое HTMLдокумент, знакомого с самим языком гипертекстовой разметки, а такжеимеющего навыки программирования в современных объектно – ориентированныхсредствах разработки приложений . Поэтомуописывать все спецификации HTMLмне не представляется нужным. Опять же, в этой работевы не найдете описания HTML,а толькотой его части, которая посвящена работе с формами и в некоторой степенипроектированию таблиц.Чтокасается программирования , я не будууглубляться в описание программной логики проекта, описывать назначение всехпроцедур и функций моего модуля, а только остановлюсь на возможностях создания ISAPI/NSAPI приложений, так как основная цельпроекта это показать возможности использования HTMLдля взаимодействия пользователя и удаленной базыданных.
Свой проект я построил следующим образом:
В теоритической части я изложу основы технологийиспользованных в работе. Это формы HTML,построение ISAPI / NSAPIмодулей всреде разработки приложений DELPHI 4.0.А в практической, соответсвенно, исходный код программы и код HTMLдокументов.
Internet – интеграция технологийВ последние пару летможно было заметить бурный рост количества пользователей глобальнойкомпьютерной сети Интернет в Росии.Значительно увеличилось число интернет провайдеров. Благодаря созданию «домашних» компьютерных сетей внекоторых районах Москвы стало возможнымкачественное подключение к Интернету за небольшие деньги Все эти меры были призваны удовлетворить всевозрастающие потребности общества в информации, и лучшим источником этойинформации стала всемирная глобальная компьютерная сеть - Интернет Сейчас я хотел бы сказать пару слово том что же представляет из себя Интернет.
С технической точки зрения Internet — этообъединение транснациональных компьютерных сетей, работающих по различнымпротоколам, связывающих всевозможные типы компьютеров, физически передающихданные по всем доступным типам линий — от витой пары и телефонных проводов дооптоволокна и спутниковых каналов. Большая часть компьютеров в Internet связано по протоколу TCP/IP. Можно сказать, что Internet — это сеть сетей, опутывающая весь земной шар.
Протокол TCP/IP позволяетпередавать информацию, а его используют разнообразные сетевые сервисы, по-разному обращающиеся с этой информацией. Internet не решила проблемы хранения и упорядочения информации, норешила проблему её передачи, дав возможность получать её когда и где угодно.Поскольку Сеть (здесь и далее Сеть- с большой буквы- будет означать Internet)децентрализована,то отключение даже значительной части компьютеров не повлияет на еёфункциональность. По оценкам аналитиков, в 1995 году число полноценноподключённых кСети компьютеров составило около 7миллионов и продолжает стремительно расти. По тем же оценкам, в началеследующего века Сеть может стать столь же доступна, как телефон или телевидениесегодня.
Как уже упоминалось, в Сети существует большое числосервисов. Нас в дальнейшем будет интересовать WWW или просто Web(Word-Wide Web- всемирная паутина). Это самыйпопулярный сервис Сети и удобный способ работы с информацией. Сегоднясуществует по меньшей мере 30 тыс. серверов WWW. Именно за счет WWW Сеть растёттак стремительно. Пользуясь несложным языком описания, можно составлятьгипермедийные документы для их последующей публикации в Сети (под гипермедийнымя подразумеваю документ, который может содержать все виды информации — отпростого текста до мултимедийных роликов). Чтобы увидеть содержание документатак, как его представляет себе его автор нужно иметь на компьютере- клиентепрограмму просмотра- браузер. Наиболее популярны сегодня InternetExplorer и Netscape Navigator ,поддерживающие многие расширения HTML(Hyper Text Markup Language- языкгипертекстовой разметки документов — именно с его помощью оформляетсяинформация в WWW). Далее подсловами браузер или программа просмотра я буду подразумевать именно этипрограммы.
Как я уже сказал выше Сеть в высшей степени обязана своейпопулярностью службе WWW. Именно с этой службой у многих ассоциируетсяпонятие Интернет. WWW- это простота доступная даже ребенку,наглядность и широкие возможности предоставления информации, можно дажеотметить такой критерий как зрелищность,так как многие WWW документы представляютсобой произведение дизайнерского и художественного искусства.
Теперь немного информации о технологии «клиент- сервер». Онаизвестна уже довольно длительное время, но раньше чаще всего использовалась вкрупных сетях масштаба предприятия. Сегодня, с развитием Internet, эта технология все чаще привлекает взоры разработчиков программногообеспечения. Её можно представить так:
·<span Times New Roman"">
клиент формирует и посылает запрос к базе данныхсервера, вернее — к программе, обрабатывающей запросы.·<span Times New Roman"">
эта программа производит манипуляции с БД, хранящейсяна сервере, в соответствии с запросом, формирует результат и передаёт егоклиенту.·<span Times New Roman"">
Клиент получает результат, отображает его на дисплее иждет дальнейших действий пользователя. Цикл повторяется, пока пользователь незакончит работу с сервером.
Клиент
Программа на сервере
БД
Запрос к серверу БД
Ответ сервера
Манипуляции с БД
<img src="/cache/referats/3721/image003.gif" v:shapes="_x0000_s1086 _x0000_s1087 _x0000_s1088 _x0000_s1089 _x0000_s1090 _x0000_s1091 _x0000_s1092 _x0000_s1093 _x0000_s1094 _x0000_s1095 _x0000_s1096">В мире накоплено огромное количество информации по различнымвопросам. Чаще всего эта информация хранится в базах данных (БД). Чтобыопубликовать её в Сети приходилось экспортировать БД в HTML- документы, что требовало больших затрат и усложняло поискинформации. Сегодня имеется большой опыт подобных работ. Практически любойпользователь Сети не раз сталкивался с подобными БД. Например, главное вработе популярного поискового сервера Altavista(адрес- http::www.altavista.com)- этозапросы к базе данных WWW- сервера поключевым словам. Ответ сервера- список гипертекстовых ссылок на найденные вСети страницы, содержащие нужную информацию. Аналогичный пример: когда мы ищем иформацию о ценах на что –либов Иитернете то мы имеем дело с базой данных, например сервер www.prices.ru Именно сегодня проблема Web- интерфейса к БД как никогда актуальна.И именно эту проблему я хотел бы осветить в своей работе.
Цели изадачи проектаБраузер клиента
Пользователь
Internet / Intranet или ЛВС
Web- интерфейс к БД
Монитор БД (Postmaster)
БД
Клиент
сервер
<img src="/cache/referats/3721/image005.gif" align=«left» v:shapes="_x0000_s1064 _x0000_s1065 _x0000_s1066 _x0000_s1067 _x0000_s1068 _x0000_s1069 _x0000_s1070 _x0000_s1071 _x0000_s1072 _x0000_s1073 _x0000_s1074 _x0000_s1075 _x0000_s1076 _x0000_s1077 _x0000_s1078 _x0000_s1079 _x0000_s1080 _x0000_s1081 _x0000_s1082 _x0000_s1083 _x0000_s1084 _x0000_s1085">Данный эскиз показывает, как работает система в общем. Конкретно всё зависит от того,где находится клиент, сервер, как клиент подсоединён к серверу. Пользователь на клиентском компьютере впрограмме просмотра заполняет предложенную форму или выбирает дальнейшеедействие. Браузер по нажатию одной из кнопок в форме пересылает данные иззаполненной формы или отображает вновь полученные в результате какой- либооперации. Не важно, к какой из сетей подключен клиент (он даже может бытьудалённым пользователем и соединиться по модему). Программа принимает данные,проверяет их и формирует запрос (запросом называется любое действие котороепользователь предлагает совершить БД) к монитору БД или получает от негорезультат. Получив запрос, монитор обрабатывает его. Если не произошло ошибок,ждёт запроса от программы на отправку программе результата. На диске серверахранится БД, модифицируемая по запросу клиента.
1)<span Times New Roman"">
Формы в HTMLДля того, чтобы пользователь мог сформировать и отправитьзапрос серверу через HTMLдокумент,используются так называемые формы ввода. Это блок документа HTMLзаключенный в тегах содержащий различные текстовые поляи кнопки отправления и служащий для формирования и отправки серверу запросапользователя. Формы имеют следующий синтаксис
<FORM ACTION="URL”METHOD >
содержание формы, включая элементы INPUT и, возможно,элементы TEXTAREA и SELECT
где:
PRIVATEимя атрибута
возможные значения
Смысл атрибута
примечания
ACTION
URL
адрес сервера, который использует форма
сервер HTTP или URL
METHOD
GET, POST
метод передачи данных, полученных от пользователя, на сервер
по умолчанию — GET
ENCTYPE
строка
механизм, используемый для кодирования содержимого формы
по умолчанию приложение <span Times New Roman"">/x-www-form-url-кодирование
В содержании формы мы можем иметьследующие поля:
Есть некоторыеэлементы, которые могут появиться только в пределах элемента FORM. В частности:
INPUT — поля ввода в формах
Цель данного поляспецифицировать в пределах формывводные поля: одностроковые текстовые поля, поля пароля, переключатели,радиокнопки, кнопки отсылки и перезагрузки, скрытые поля, выгрузки файла,кнопки изображения и т.д.
Типичное отображение
Меняется согласно типу поля.
Основной синтаксис
тип_поля_вводадругие_атрибуты>
Возможные атрибуты
PRIVATEимя атрибута
возможные значения
смысл
примечания
TYPE
TEXT, PASSWORD, CHECKBOX, RADIO, SUBMIT, RESET, FILE, HIDDEN, IMAGE
тип поля для ввода
по умолчанию TEXT
NAME
строка
имя для идентификации поля, когда его содержимое передается серверу
требуется для всех атрибутов, кроме SUBMIT и RESET
VALUE
строка
первоначальное значение вводного поля; для атрибутов SUBMIT или RESET — текстовая метка
обязателен, если TYPE = RADIO или CHECKBOX
CHECKED
установленный
когда TYPE = RADIO или CHECKBOX, инициализирует поле к установленному состоянию
SIZE
целое
видимый размер поля; количество символов
MAXLENGTH
целое
максимальное количество символов, разрешенных в текстовом поле
по умолчанию не ограничено
SRC
URL
адрес изображения
для полей с фоновыми изображениями
ALIGN
TOP, MIDDLE, BOTTOM, LEFT, RIGHT
выравнивание изображения для графических управляющих кнопок
по умолчанию BOTTOM
Различныезначения атрибута TYPE соответствуют различным видам вводных полей.
TYPE=TEXT (тип=текст — по умолчанию)
Одностроковоетекстовое поле, чей видимый размер может быть установлен атрибутом SIZE, например, SIZE=40 для40-символьного поля. Пользователи могут вводить и больше символов, чем этот предел,но с текстовым скроллингом (пролистыванием) поля, чтобы курсор ввода оставалсявидимым. Вы можете задать верхний предел количества символов атрибутом MAXLENGTH. Атрибут NAME используется для наименованияполя, а атрибут VALUEинициализирует текстовую строку в поле, когда документ впервые загружен.
Заметим, чтотекстовый ввод ограничен одной строкой. Используйте элемент TEXTAREA, чтобы определить многостроковые текстовыеполя.
Пример:
<INPUT TYPE=TEXT SIZE=40 NAME=uservalue=«your name»>
TYPE=PASSWORD(тип=пароль)
Этот тип подобен TYPE=TEXT, однако все вводимыесимволы представляются в виде *,чтобы скрыть текст от подсматривающих глаз, когда вводится пароль. Вы можетеиспользовать атрибуты SIZE и MAXLENGTH, чтобы управлятьвидимой и максимальной длинами поля точно так же, как для обычного текстовогополя.
Пример:
<INPUTTYPE=PASSWORD SIZE=12 NAME=pw>
TYPE=CHECKBOX(тип=поле установки — переключатель)
Используется дляпростых булевых атрибутов (т.е. атрибутов, принимающих значение ИСТИНА илиЛОЖЬ) или для атрибутов, которые одновременно могут принимать множествозначений. Каждое заполненное переключательное поле генерирует отдельную паруимя/значение в формируемых данных, даже если это приводит к дублированию имен.Используйте атрибут CHECKEDдля инициализации поля установки по умолчанию.
Пример:
<INPUTTYPE=CHECKBOX CHECKED NAME=uscitizen VALUE=yes>
TYPE=RADIO(тип=радиокнопка)
Используется дляатрибута, который может принимать единственное значение из множества. Каждоеполе радиокнопки в группе должно быть задано только одним значением атрибута NAME. Радиокнопки требуют явногоатрибута VALUE. Единственнаянажатая радиокнопка в группе генерирует пару имя/значение в формируемых данных.Одна радиокнопка в группе атрибутом CHECKEDдолжна быть предварительно установлена по умолчанию.
Пример:
<INPUTTYPE=RADIO NAME=age VALUE=«0-12»>
<INPUTTYPE=RADIO NAME=age VALUE=«13-17»>
<INPUTTYPE=RADIO NAME=age VALUE=«18-25»>
<INPUTTYPE=RADIO NAME=age VALUE=«26-35» CHECKED>
<INPUTTYPE=RADIO NAME=age VALUE=«36-»>
TYPE=SUBMIT(тип=отсылка)
Определяеткнопку, которую пользователь может нажать, чтобы передать содержимое формысерверу. Метка устанавливается атрибутом VALUE. Если атрибут NAME задан, то пара наименование/значение дляисполняемой кнопки будет включена в передаваемые данные. Вы можете включитьнесколько исполняемых кнопок в форму. Смотрите TYPE=IMAGE для графических исполняемых кнопок.
Примеры:
<INPUTTYPE=SUBMIT VALUE=«Party on...»>
TYPE=RESET(тип=перезагрузка)
Определяеткнопку, которую пользователь может нажать, чтобы вернуть поля формы к исходномусостоянию, когда документ был впервые загружен. Вы можете установить метку спомощью атрибута VALUE.Кнопки перезагрузки никогда не посылаются как часть содержимого формы.
Пример:
<INPUTTYPE=RESET VALUE=«Start over...»>
TYPE=FILE(тип=файл)
Этот тип даетвозможность пользователям прикрепить файл к содержимому формы. Элемент обычноотображается, как текстовое поле с кнопкой, при нажатии на которую появляетсяфайловый броузер для отбора имени файла. Имя файла также может быть введенопрямо в текстовое поле.
Таким же образом,как для TYPE=TEXT, для TYPE=FILEможно использовать атрибут SIZE,чтобы установить видимую ширину поля. Вы также можете установить верхний пределдля длины имени файла, используя атрибут MAXLENGTH. Некоторые программы просмотра поддерживаютспособность ограничивать виды файлов, которые могут быть прикреплены к форме,перечислением разделяемого запятыми списка файлов с содержимым типа MIME,задаваемого атрибутом ACCEPT. Например, <span Times New Roman"">ACCEPT=«image/*»
ограничит файлы изображениями. Дополнительная информация можетбыть найдена в RFC 1867.Пример:
<INPUTTYPE=FILE NAME=photo SIZE=20>
TYPE=HIDDEN(тип=скрытый)
Этот тип поля неотображается пользователю. Скрытое поле дает возможность для серверов хранитьинформацию о состоянии вместе с формой. Когда форма «исполняется» принажатию соответствующей кнопки, серверу будет передана пара имя/значение,определенная с использованием соответствующих атрибутов. Этот тип создаетрабочее окружение для полноты возможностей HTTP и является альтернативой дляиспользования так называемой HTTP cookies.
Пример:
<INPUTTYPE=HIDDEN NAME=customerid VALUE=«c2415-345-8563»>
TYPE=IMAGE
Используется дляграфических кнопок отсылок, отображаемых изображением. URL для изображенийспецифицируется атрибутом SRC.Выравнивание изображения может быть специфицировано атрибутом ALIGN. В этом отношении графические кнопки отсылкиидентичны элементам IMG(так, Вы можете установить для ALIGN — LEFT, RIGHT, TOP, MIDDLE или BOTTOM).Атрибуты NAME и VALUE трактуются точно также,как текстовые кнопки отсылки и должны быть заданы для обеспечения работынеграфических программ просмотра.
Пример:
<INPUTTYPE=IMAGE SRC=«partyon.gif» VALUE=«Party on...»>
Допустимый контекст
Текстовый контейнер,т.е. любой элемент, который может содержать текстовые элементы. Включает большинство элементовHTML. Текстовый контейнер может появиться в пределах элемента FORM.
Содержимое
Никакое.
Примеры
<INPUTTYPE=RESET VALUE=«Start over...»>
Примечания
ИспользованиеINPUT для ввода текста ограничено одностроковыми полями. Используйте TEXTAREA, чтобы определитьмногостроковые текстовые поля.
SELECT (ВЫБРАТЬ) — меню выбора в форме
Цель
Спецификация впределах формы: меню, изкоторого пользователь может выбрать один или несколько элементов.
Типичное отображение
Меню выбора,которое может быть «активизировано» некоторым зависящим от броузераобразом; обычно в графических броузерах это означает ниспадающее меню. Взависимости от броузера все варианты выбора могут быть видимы одновременно илипользователь может просматривать элементы меню.
Основной синтаксис
имя>
элементы OPTION
Возможные атрибуты
PRIVATEимя атрибута
возможные значения
смысл
примечания
NAME
строка
имя, которое используется для идентификации выбора меню, когда форма передается серверу
обязателен; каждая отобранная опция образует пару имя/значение, включаемую в содержимое формы
SIZE
целое
устанавливает число одновременно видимых опций
используется, когда задан MULTIPLE
MULTIPLE
MULTIPLE
означает, что пользователь может сделать множественный выбор из меню
по умолчанию разрешен только один выбор
Допустимый контекст
Текстовый контейнер,т.е. любой элемент, который может содержать текстовые элементы. Это включает большинство HTMLэлементов. Однако, текстовый контейнер может появиться только в пределахэлемента FORM.
Содержимое
OPTION элементы.
Примеры
Пример:
<SELECTNAME=«flavor»>
<OPTIONVALUE=a>Vanilla
<OPTIONVALUE=b>Strawberry
<OPTIONVALUE=c>Rum and Raisin
<OPTIONVALUE=d>Peach and Orange
Примечания
Смотрите обсуждение формы.
Как альтернативуSELECT, Вы можете использовать элемент INPUT с TYPE=CHECKBOX или TYPE=RADIO, который при отображении позволяетпользователю увидеть все варианты сразу.
TEXTAREA- многострочное поле текстового ввода в форме
Цель
Специфицировать впределах формы область длямногострочного пользовательского ввода.
Типичное отображение
Область ввода,появляющаяся в виде отдельного прямоугольника, возможно, имеющего свой фоновыйцвет и обычно со скроллингом некоторого типа как в вертикальном, так и в горизонтальномнаправлении. Область инициализирована содержимым элемента TEXTAREA,использующим одноразмерный шрифт.
Основной синтаксис
имя ROWS=m COLS=n>
текст
Возможные атрибуты
PRIVATEимя атрибута
возможные значения
смысл
примечания
NAME
строка
имя, которое используется для идентификации поля с текстовым содержимым, когда форма передается серверу
обязательно
ROWS
целое
количество линий видимого текста
обязательно
COLS
целое
число, задающее видимую ширину текста
обязательно
Программапросмотра не должна интерпретировать атрибуты ROWS и COLS, как ограничивающиеразмер действительного ввода. Броузер должен предоставить некоторые средстваскроллинга содержимого области вводимого текста, когда его размер выходит запределы видимой области.
Броузер можетперенести строку видимого текста, чтобы уложиться в длину строки видимоготекста без скроллинга.
Допустимый контекст
Текстовый контейнер,т.е. любой элемент, который может включать текстовые элементы. Это включает большинствоэлементов HTML. Однако, текстовый контейнер может появляться только в пределахэлемента FORM.
Содержимое
Строка. Escape последовательностьразрешена, однако никакие теги не распознаются.
Содержимоеиспользуется для инициализации текста, который выводится в вводном поле припервой загрузке документа.
Примеры
Youraddress here…
Примечания
Смотрите обсуждение форм.
Дляоднострокового поля ввода можно использовать элемент INPUT с TYPE=TEXT.
Форма будет правильно работать лишьв том случае, если все вышеуказанные поля заключены между тегами и каждому текстовому полю обязательнодолжно быть присвоено имя NAME=…
<img src="/cache/referats/3721/image007.jpg" v:shapes="_x0000_s1107">
Вот так форма отображается в браузере.
А вот HTML код этой формы
<form method=«GET»action="/Scripts/test/webshop.dll/addmsg">
Cервер «Электронныймагазин»
Оставьте вашесообщение
<imgsrc=«img/cls_dkbl.gif»>
Введите Ваш адресэлектронной почты
<imgsrc=«img/bullet30.gif»>
<input name=«sender»type=«TEXT»>
<TEXTAREANAME=«message» ROWS=5 COLS=60>Введите Ваши пожеланияздесь
<imgsrc=«img/bullet30.gif»>
<input type=«SUBMIT»value=«Ввод»>
<input type=«RESET»value=«Отменить»>
Принажатии кнопки «Ввод» происходит событие SUBMIT и содержание текстовых полей этой формы отправляется поадресу который указан в ACTIONсвойстве формы action="/Scripts/test/webshop.dll/addmsg. В данном случаеадрес указывает на динамическую библиотеку webshop.dll загруженную на сервере и этой библиотекепередается команда addmsg тоестьполучить из текстового поля само сообщение пользователя, адрес его электронной почты и записать эти данные вкакой либо файл на сервере. Полный вид запроса посылаемого серверу имеет следующий вид: <a href=«shop.com/Scripts/test/webshop.dll/addmsg?sender=»xxx@xxx&message">http://shop.com/Scripts/test/webshop.dll/addmsg?sender=xxx@xxx&message=ccc
,где xxx и ссссодержание соответствующих полей текстовой формы. Если отбросить адрес сервера, тозапрос имеет вид командной строки DOS <a href=«mailto:webshop.dll/addmsg?sender=xxx@xxx&message=»ccc">webshop.dll/addmsg?sender=xxx@xxx&message=ccc Библиотека webshop.dll –называется ISAPI приложением (ISAPI – Internet Services API). Именнообзору интерфейса ISAPI будетпосвящена следующая глава.ISAPIприложенияМестопрограммирования в публикации данныхтаково. Приемом и обработкой запросов от клиентов занимается WEBсервер. Большая часть серверов Internet работает под управлением UNIXи популярного на этойплатформе сервера Apache, растет популярность платформы Windows NT Serverи сервера Microsoft Internet Information Server. Сервер реализует поддержкупротокала HTTP, принимая от браузеров клиентов запросы и выдаваяим в ответ те или иные WWW страницы. Но всех возможных запросов не предусмотришьпоэтому после после получения запроса сервер передает управление WEB –интерфейсуБД (модулю расширения). Чаще всего эти модули расширения называют сценариямиили скриптами (scripts). Задача такого скрипта — обработать запрос, извлечь из базы данныхили другого внешнего источника нужную информацию, оформить ее в виде HTMLдокумента и передать ее обратно серверу, который возьмет на себя труд отправитьее браузеру клента.
Первым иобщепринятым интерфейсом для созданиямодулей расширения является CGI (Common Gateway Interface) , распространенный в Unix.Излюбленным языком написания CGIскриптов является PERL,хотя можнописать и на С, BasicиDelphi.
Microsoftснабдила свой сервер Internetпротоколом длявзаимодействия с модулями расширения ISAPI (ISAPI – Internet ServicesAPI), по которому скрипт представляет собой динамическую библиотеку,загружаемую сервером и работающую с ним в одном адресном пространстве. Библиотекадолжна экспортировать вполне определенные функции (их три: GetExtensionVersion, HttpExtensionProc, TerminateExtension), которые и будут вызываться сервером.Одна библиотика может обрабатыватьсколько угодно запросов.
Пример сгенеренной ISAPIмодулем HTML страницы, выдающей ответ на зпрос:
<img src="/cache/referats/3721/image009.jpg" v:shapes="_x0000_s1109">Исходныйкод ISAPI модуляна языке Delphi 4
unitwebshopunit;
interface
uses
Windows, Messages, SysUtils, Classes,HTTPApp, DBWeb, Db, DBTables;
type
TWebModule1 = class(TWebModule)
GroupQuery: TQuery;
WebSession: TSession;
StoreQTP: TQueryTableProducer;
GroupQueryMainGroup: TIntegerField;
GroupQuerySubGroup: TIntegerField;
GroupQueryGroupName: TStringField;
StoreQuery: TQuery;
ValidateQuery: TQuery;
AddMsgQuery: TQuery;
procedure WebModule1GetGroupAction(Sender:TObject;
Request: TWebRequest; Response:TWebResponse; var Handled: Boolean);
procedure WebModule1Create(Sender:TObject);
procedure StoreQTPFormatCell(Sender:TObject; CellRow,
CellColumn: Integer; var BgColor:THTMLBgColor;
var Align: THTMLAlign; var VAlign:THTMLVAlign; var CustomAttrs,
CellData: String);
procedure WebModule1Destroy(Sender:TObject);
procedure WebModule1ValidateAction(Sender:TObject;
Request: TWebRequest; Response:TWebResponse; var Handled: Boolean);
procedure StoreQTPGetTableCaption(Sender:TObject; var Caption: String;
var Alignment: THTMLCaptionAlignment);
procedureWebModule1AcceptOrderAction(Sender: TObject;
Request: TWebRequest; Response:TWebResponse; var Handled: Boolean);
procedure WebModule1SearchAction(Sender:TObject; Request: TWebRequest;
Response: TWebResponse; var Handled:Boolean);
procedure WebModule1AddMSgAction(Sender:TObject; Request: TWebRequest;
Response: TWebResponse; var Handled:Boolean);
private
ScriptName: String;
{ Private declarations }
public
{ Public declarations }
function GroupListProducer(Query: TQuery;Kind: Integer): string;
function CreateGroupList(Gr1,Gr2,Kind:Integer): string;
end;
var
WebModule1: TWebModule1;
resourcestring
sOrderAccepted = 'Tр° чрърч єёях°эюяЁшэ Є';
sContent = '+уыртыхэшх';
implementation
uses inifiles;
{$R *.DFM}
var HTMLPath, TemplatesPath, DBAliasName,
iniName,CommonLook,CommonEnd: string;
UserStatus: Integer;
csect: TRTLCriticalSection;
procedureTWebModule1.WebModule1Create(Sender: TObject);
var
ini: TINIFile;
FN: array[0..MAX_PATH- 1] of char;
s1,s2: string;
fs: TFileStream;
bgpath, txtcol, lcol,vcol,acol: string;
begin
GetWindowsDirectory(FN, SizeOf(FN));
s1:= StrPas(fn);
GetModuleFileName(hInstance, FN, SizeOf(FN));
s2 := ExtractFileName(StrPas(fn));
if not (Char(s1[Length(s1)]) in ['/',''])then AppendStr(s1,'/');
if Pos('.',s2)<>0 then s2 :=Copy(s2,1,Pos('.',s2)-1);
iniName := s1+s2+'.ini';
ini := TINIFile.Create(iniName);
HTMLPath :=ini.ReadString('Paths','HTMLPath','/test');
TemplatesPath :=ini.ReadString('Paths','TemplatesPath',s1);
DBAliasName :=ini.ReadSt