Реферат: 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

еще рефераты
Еще работы по программному обеспечению