Architecture Net



         

Обработка форм


В данном примере к ATLserverApp.h добавляется класс обработчика запросов, называемый C_process_post_AppHandler. В этом классе имеется метод ProcessPost, который получает доступ к переменной, переданной из формы с помощью объекта HTTP-запроса. Коллекцию CHttpRequestParams можно получить из метода CHttpRequest: :GetFormVars. Затем для получения из формы значения с определенным именем используется метод CHttpRequestParams :: Exchange В нашем примере таким именем значения является "txtName". Значение, содержащееся в szName, мы будем передавать назад клиенту — всего лишь для доказательства того, что этот метод работает.

// Обработчик (handler), который обрабатывает POST
[request_handler("process_post")]
class C_process_post_AppHandler
{
protected: // защищенный
[ tag_name(name="ProcessPost") ]
HTTP_CODE ProcessPost(void)
{
// использовать переменную формы
const CHttpRequestParams &request = // константа
m_HttpRequest.GetFormVars();
CValidateContext valCtx;
LPCSTR szName;
request.Exchange("txtName", SszName, fivalCtx); // запрос.


// Обмен
m_HttpResponse
<< "Welcome to ATL Server, " << szName << "<p>";
// «"Добро пожаловать в ATL Server,
" return HTTP_SUCCESS;
}
};

Вот файл process_post. srf, который предоставляет доступ к только что описанному методу ProcessPost:

{{handler ATLServerApp.dll/process_post}}
{{ProcessPost}}

На этот раз непосредственного доступа к process_post .srf через броузер не будет. Доступ теперь возможен через другой, HTML-файл, содержащий форму. Второй файл [При создании решения в среде Visual Studio html-файл автоматически копируется в виртуальный каталог размещения вместе с srf-файлами.] называется SimpleForm.html и содержит следующий HTML-код. Обратите внимание, что этот HTML-код регистрирует запрос, содержащий значение с именем "txtName".

<HTML>
<HEAD>
</HEAD>
<BODY> <!-- ТЕЛО -->
<form method="post" <!-- метод -->
action= <!-- действие -->
"http://localhost/ATLServerApp/process_post.srf">




Содержание  Назад  Вперед