КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Замечание. При получении запроса Web-модуль перебирает свойство Pathinfo у всех, предварительно определенных действий с целью нахождения совпадения с запрашиваемым
Важно При получении запроса Web-модуль перебирает свойство Pathinfo у всех, предварительно определенных действий с целью нахождения совпадения с запрашиваемым адресом. В случае если она совпала с полем Pathinfo одного из действий, то автоматически активизируется этот вариант поведения модуля. Активизация действия означает выполнение кода, записанного в его свойстве OnAction, а также исполнение своих прямых обязанностей объектом, указанным в свойстве Producer. Если же запрошенная строка на совпадает ни с одним Pathinfo, то по умолчанию активизируется действие, в котором свойство Default установлено в значение true.
Добавление нового действия Для добавления действия в проект и описания его свойств необходимо выполнить следующую последовательность операций: 1. Активизировать окно Action Editor. Для этого нужно щелкнуть правой кнопкой мыши по полю Web-модуля, и из всплывающего меню выбрать строчку Action Editor. В Delphi 5.0 появится меню, приведенное на рис. 10.4. (В Delphi 3.0 вместо пиктограмм используются кнопки с надписями.) В появившемся меню нужно нажать кнопку Add,. вслед за чем в меню появится новое действие. Рис. 10.4. Меню редактора действий 2. Описать свойства действия. Впишите в окне Object Inspector следующие свойства нового действия: Default: true; Enabled: true; MethodType: mtPost; name: hello; pathinfo: /hello. 3. Создать объект, который будет генерировать содержимое Web-страниц, и вписать его название в поле Producer. Таким объектом может являться как один из предназначенных для этих целей компонентов Delphi, так и написанные вручную объекты, являющиеся подмножеством класса TWebProducer.
Генератор страниц (компонент TPageProducer) Поскольку основная цель использования вкладки "Internet" Component Palette Delphi заключается в облегчении и ускорении процесса создания серверных модулей, то наряду с автоматизацией процесса разбора пользовательских запросов, предусмотрена возможность отправки Web-страницы пользователю, причем программист должен лишь указать либо путь и название отправляемого файла, либо само его содержимое. Остальные детали отправки данных, например указание типа данных, HTTP-заголовков, и даже открытие файлов, чтение и передачу данных в поток вывода, выполняет компонент TPageProducer. Как и остальные невизуальные компоненты, о которых идет речь, в данной главе, он расположен на вкладке "Internet" Component Palette (рис. 10.5).
Рис. 10.5. Значок компонента TPageProducer Этот компонент предназначен для передачи ответной страницы клиенту. Если задать имя HTML-файла, то объект данного класса передаст содержимое указанного файла клиенту. Можно также в режиме выполнения программы определять теги, из которых должна состоять Web-страница, и тогда вместо указанного файла они будут посланы браузеру. Основные свойства компонента TPageProducer приведены в табл. 10.2. Таблица 10.2. Свойства компонента TPageProducer
Методы компонента TPageProducer приведены в табл. 10.3. Таблица 10.3. Некоторые методы компонента TPageProducer
Давайте вернемся к реализации нашего маленького проекта и добавим в него объект класса TPageProducer, поместив соответствующий компонент в Web-модуль. Установим свойство Name равным hello, а в HTMLFile пропишем путь к файлу hello.htm. Кроме того, вернувшись к списку действий, нужно определить название генератора ответа для действия hello, которым и будет являться объект hello. Таким образом, в нашем проекте имеются все основания для правильной работы серверного модуля: есть действие, которому присвоен статус "по умолчанию"; для этого действия определен объект, выполняющий отправку результата работы — объект hello, который выдаст клиенту некоторый HTML-файл. Теперь скомпилируем проект и посмотрим, как он работает. Если вы сохранили проект в подкаталоге под названием, указанным выше, то, запустив Web-сервер и введя адрес: http://localhost/cgi-bin/hello вы можете увидеть приведенную на рис. 10.3 страницу. Разумеется, эта страница могла быть загружена привычным способом — путем ввода в адресную строку браузера непосредственного пути к ней, однако наш пример демонстрирует формирование ответа на основании статических данных. Другой способ определения данных, отправляемых клиенту, — это генерация ответных страниц с использованием шаблонов.
Использование шаблонов при формировании ответа В абсолютном большинстве задач, для решения которых используется динамическое формирование Web-страниц, необходимо генерировать лишь некоторый фрагмент HTML-кода. Остальная часть страницы, например, заголовок, различного рода сопроводительная информация, текстовые фрагменты и т. д. остаются неизменными. Пример Web-страницы, в которой динамическим является лишь небольшой фрагмент, приведен на рис. 10.6. Рис. 10.6. Пример двух страниц, в которых динамически формируемым является лишь активное содержимое Для того чтобы при создании серверных модулей программист контролировал лишь активное содержимое и не заботился о полном наборе данных, составляющих HTML-файл, используются шаблоны. Основой шаблона являются так называемые "прозрачные" теги. Эти теги представляют собой специальным образом помеченные строки, при нахождении которых в теле данных, передаваемых объектом класса TPageProducer, вызывается событие OnHTMLTag для их замены на содержательную, динамически формируемую информацию, которая и должна составлять активную часть Web-страницы. От обычных тегов "прозрачные" отличаются тем, что между символом начала тега < и самой командой ставится знак #, без пробелов. Пример таких тегов приведен в листинге 10.1. Листинг 10.1. Пример "прозрачного" тега <TABLE> <#TR> Как только эта строка появится в теле передаваемого файла, активизируется событие OnHTMLTag. <#TD> To же самое. </TABLE> При передаче этого примера в составе Web-страницы будет дважды вызвано событие OnHTMLTag для замены строк шаблона. Если обработчик этого события не указан, или он не вернул конечные значения, то в результирующем потоке "прозрачные" теги будут опущены и пользователю будет передано содержимое шаблона без них.
Дата добавления: 2014-12-29; Просмотров: 452; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |