Architecture Net


Передача параметров серверному обработчику - часть 3


{{handler ATLServerApp.dll/pass_parameter}}
{{SquareOfParameter(10)}}

Результат можно увидеть, перейдя по адресу http://localhost/ATLServerApp/ pass_parameter.srf Что получается при этом переходе, показано на рис. 12.13.


Кроме того, из файла . srf в обработчик запросов Web-приложения можно передавать несколько параметров различных типов. Для этого надо определить структуру с элементами, которые должны соответствовать передаваемым параметрам Следующий пример демонстрирует, как из . srf-файла передаются два параметра Первый из них является числом, а второй — строкой Функция грамматического разбора выделяет указанные два параметра из одной строки и "укладывает" их в пользовательскую структуру, которая называется PARAMETER_DATA (данные параметров) Эта функция с помощью простых приемов грамматического разбора разбивает строку-параметр на лексемы и приводит тип каждого из параметров к тому типу, который должен быть у соответствующего элемента структуры Затем структура передается методу замены как один составной параметр.

13.gif



Рис. 12.13. Просмотр pass_parameter srf

Данный пример также демонстрирует, как с помощью второго приема связать функцию грамматического разбора с указанным выше методом управления заменой В соответствии с этим приемом имя метода фа мм этического разбора явно указывается с помощью параметра parse_f unc в атрибуте tag_name метода замены

// Обработчик, который принимает два параметра
[request_handler("pass_two_parameters")]
class C_pass_two_parameters_ATLServerAppHandler
{
protected: // защищенный
// пользовательская структура для того,
// чтобы сохранять преобразованные параметры
typedef struct
{
short index; // короткий индекс
char string[100]; // строка символов
} PARAMETER_DATA;
// метод синтаксического анализа преобразовывает
// два параметра из строки
HTTP_CODE parseTwoParametersFunction(
IlAtlMemMgr* pMemoryManager,
LPCSTR szArgumentData,
PARAMETER_DATA** ppArgument)
{
// распределить память для параметров,
// которые будут переданы
PARAMETER_DATA *pparams =
(PARAMETER_DATA *)pMemoryManager->Allocate(
// Распределить
sizeof(PARAMETERJDATA));
// установить параметры, которые будут
// переданы методу замен
char *szToken = strtok( // символ
(LPSTR)szArgumentData, ", "); // получить 1-й параметр




- Начало -  - Назад -  - Вперед -



Книжный магазин