Передача параметров серверному обработчику
Квадрат параметра отображается соответствующим файлом pass_parameter.srf.
{{handler ATLServerApp.dll/pass_parameter}} {{SquareOfParameter(10)}}
Результат можно увидеть, перейдя по адресу http://localhost/ATLServerApp/pass_parameter.srf. Что получается при этом переходе, показано на рис. 12.13.
Рис. 12.13. Просмотр pass_parameter srf
Кроме того, из файла .srf в обработчик запросов Web-приложения можно передавать несколько параметров различных типов. Для этого надо определить структуру с элементами, которые должны соответствовать передаваемым параметрам. Следующий пример демонстрирует, как из .srf-файла передаются два параметра. Первый из них является числом, а второй – строкой. Функция грамматического разбора выделяет указанные два параметра из одной строки и "укладывает" их в пользовательскую структуру, которая называется PARAMETER_DATA (данные параметров). Эта функция с помощью простых приемов грамматического разбора разбивает строку-параметр на лексемы и приводит тип каждого из параметров к тому типу, который должен быть у соответствующего элемента структуры Затем структура передается методу замены как один составной параметр.
Данный пример также демонстрирует, как с помощью второго приема связать функцию грамматического разбора с указанным выше методом управления заменой. В соответствии с этим приемом имя метода этического разбора явно указывается с помощью параметра parse_func в атрибуте 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) { // распределить память для параметров, // которые будут переданы