на начало
На главную страницу
Форум   

Статья :: Добавление на сервер обработки управляющей структуры if-else-endif


Добавление на сервер обработки управляющей структуры if-else-endif

В файле if_else_endif. srf содержится управляющая структура if-else-endif (если-иначе-конец если). Аналогичный обработчик добавляется в динамически подключаемую библиотеку (DLL) Web-приложения. Обратите внимание, что если количество секунд четное, то возвращаемым значением является HTTP_SUCCESS (success — "успех"), а если нечетное, то возвращается HTTP_S_FALSE (false — "ложь"). S в HTTP_S_FALSE означает, что на самом деле это успешный (successful) код, и никакой ошибки нет. Вероятность каждого исхода составляет 50 %. Таким образом, если клиент выполнял обновление несколько раз, то оба указанных результата будут равномерно распределены. Обратите внимание, что метод ShouldThisBeDone ("должно ли это быть сделано") на самом деле никаких HTML-данных клиенту не отправляет. Он предназначен только для того, чтобы управлять размещением текста и дескрипторов между дескрипторами if (если), else (иначе) и endif (конец если), находящимися в . srf-файле. Вот код C++ для этих новых возможностей

// Обработчик для проверки if (если), else(иначе) и endif
[request_handler("if_else_endif")]
class C_if_else_endif_ATLServerAppHandler
{
protected: // защищенный
[ tag_name(name="ShouldThisBeDone") ]
HTTP_CODE ShouldThisBeDone(void)
{
SYSTEMTIME systemTime;
GetLocalTime(&systemTime);
// возвратить HTTP_SUCCESS в 50 % случаев
if (systemTime.wSecond % 2)
return HTTP_SUCCESS;
else
return HTTP_S_FALSE;
}
};

HTTP_SUCCESS и HTTP_S_FALSE в действительности представляют соответственно значения TRUE (ИСТИНА) и FALSE (ЛОЖЬ). Если вы в своем броузере укажете if_else_endif. srf и несколько раз обновите броузер, то увидите, что эти два исхода появляются в случайном порядке. И хотя в приоре такое не встречается, между дескрипторами if (если), else (иначе) и endif можно расположить другие дескрипторы

{{handler ATLServerApp.dll/if_else_endif}}
{{if ShouldThisBeDone}}
Here is text that is displayed if ShouldThisBeDone
{{else}}
Here is text that is displayed if *not* ShouldThisBeDone
{{endif}}

Вот более русифицированная версия.

{{обработчик ATLServerApp.dll/if_else_endif}}
{{если ShouldThisBeDone}}
Вот - текст, который отображается если ShouldThisBeDone
{{иначе}}
Вот - текст, который отображается если *не* ShouldThisBeDone
{{конец если}}

Результат можно увидеть, перейдя по адресу http://localhost/ATLServerApp/ if_else_endif.srf Два возможных исхода показаны на рис. 12.10. и 12.11.

10.gif

Рис. 12.10. Просмотр if_else_endif.srf

11.gif

Рис. 12.11. Другой просмотр if_else_endif.srf


Добавление на сервер обработки управляющей структуры if-else-endif

страницы в данном разделе 
Глава 12. Web-узлы и Web-службы, работающие на основе ATL Server Web-узлы и Web-службы, работающие на основе ATL Server
История технологий, работающих с динамическим содержимым Web Приложения на основе ATL Server
ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI) Архитектура приложения, использующего ATL server
Создание проекта ATL Server Project (Проект на основе ATL Server) Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)
Динамически подключаемая библиотека (DLL) Web-приложения Создание и запуск проекта на основе ATL Server
Добавление в сервер еще одного обработчика Добавление на сервер обработки управляющей структуры if-else-endif
Добавление на сервер обработки управляющей структуры while-endwhile Передача параметров серверному обработчику
Поддержка состояния сеанса Получение доступа к переменным сервера
Обработка форм Службы сеанса
Создание проекта Web-службы на основе ATL Server (ATL Server Web Service Project) Код Web-службы на основе ATL Server: ATLServerWebService.h
Создание клиентской программы, обращающейся к Web-службе Добавление функций в Web-службу на основе ATL Server
Изменение клиентской программы, работающей с Web-службой Передача структур в качестве входных и выходных параметров
Резюме >  


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста