
- •Завдання дій, оброблювальних запитів клієнта
- •Компіляція і тестування створеного додатка
- •Компоненти для формування відповіді у форматі html
- •Компонент tPageProducer
- •Компоненти для роботи з базами даних
- •Компонент tDatasetPageProducer
- •Компонент tDataSetTableProducer
- •Компоненти Indy
- •Приклад створення простого веб-сервера
- •Приклад клієнтського додатку
Завдання дій, оброблювальних запитів клієнта
При використанні компонента TWebModule обов'язково треба задати хоча б одну дію (action), яка забезпечить обробку запиту клієнта.
Виберіть у інспектора об'єктів компонент TWebModule і клацніть на кнопці з трьома крапками в полі введення властивості Actions цього компонента.
Створіть нову дію. Для цього слід скористатися або кнопками на панелі інструментів редактора дій (кнопка Add New), або командою Add контекстного меню редактора дій, яке відкривається при клацанні правою кнопкою миші у вікні редактора дій (можна також просто натиснути клавішу Ins).
Задайте необхідні властивості дії. Для цього слід скористатися інспектором об'єктів, в якому відображаються властивості дії, виділений у вікні редактора дій. Встановіть значення властивості Pathlnfo рівним / validate. Це призведе до того, що дана дія буде обробляти НТТР-запит тільки в тому випадку, якщо при виклику сценарію після його імені буде вказана рядок / validate, наприклад:
/ scripts / test.cgi / validate
Задайте обробник запиту, тобто обробник події OnAction створеної дії. Для цього виберіть в інспекторові об'єктів вкладку Events і двічі клацніть у полі введення цієї події. В результаті буде створений шаблон процедури-обробника події OnAction.
У запиті нам потрібно проаналізувати інформацію, введену користувачем: відповідає вона деяким заданим даним чи ні. Користувач повинен ввести два значення: ім'я та пароль. Нехай для їх введення використовуються текстові поля з ідентифікаторами login і password відповідно. Необхідно отримати з рядка параметрів, надісланий клієнтом, текст, введений користувачем в кожне з цих текстових полів, і порівняти його з заданим текстом (щоб не ускладнювати завдання, будемо вважати, що ім'я користувача і відповідний йому пароль жорстко задаються в самому веб - додатку). В залежності від результату порівняння формується відповідь.
В якості відповіді при точній відповідності імені користувача і пароля заданий-ним значенням виведемо рядок Login / Password correct, при помилковому введенні - рядок Login / Password incorrect. Однак перед отриманням параметрів слід спочатку визначити, яким методом виконувалася передача рядка параметрів - GET або POST. Це необхідно, оскільки різними методами рядок параметрів передається по-різному: якщо використаний метод GET - через властивості Query і QueryFields параметра Request; якщо ж використовується метод POST - через властивості Content і ContentFields цього ж параметра. Таким чином, введіть наступний код обробника запиту:
procedure TWebModulel.WebModulelWebActi onltemlActi on (
Sender: TObject: Request: TWebRequest;
Response: TWebResponse: var Handled: Boolean):
/ / Задаємо правильні ім'я користувача і пароль
const
login: string = 'test';
password: string = '123 ':
/ / Оголошуємо змінну, яка вказує, чи правильні дані.
/ / Введені користувачем var
validate: Boolean:
begin validate: = fal se:
// Перевіряємо, чи використаний метод GET if
Request.Method* 'GET' then // Перевіряємо,
правильні чи неправильні дані.
// введені користувачем
vali date: "(Request.QueryFi el ds.Val ues ['1 ogi n '] = 1ogi n)
and (Request.QueryFields.Values ['password'] = password):
// Перевіряємо, чи використаний метод POST if
Request.Method = 'POST' then // Перевіряємо,
чи правильні дані, чи ні.
// введені користувачем
vali date: = (Request.ContentFi elds.Values ['1 ogi n']=1ogi n) and (Request.ContentFields.Values [' password '] = password): if validate then Response.Content: =
'<H2 ALIGN=CENTER> Login / Password correct </ H2>'
else
Response.Content: =
'<H2 ALIGN=CENTER> Login / Password incorrect </ H2>'
end;