Вход


Главная страница >> Учебный процесс >> Конспекты >> Delphi. Программирование для Internet >> Перенаправление на другой Web-узел.

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

  


Перенаправление на другой Web-узел.


Перенаправление на другой Web-узел

Часто бывает, что некоторому URL нужно поменять назначение запроса пользователя. Web-приложение может обработать некоторые данные на основе запроса, а затем отправить назад страницу, которая будет зависеть от природы запроса или некоторого элемента базы данных. При публикации в Web объявлений это делается особенно часто. Так, рекламная графика указывает на другой URL, и после щелчка на таких изображениях пользователь перебрасывается на начальную

страницу рекламодателя. Часто HTML-код для графики рекламного характера содержит параметры рекламодателя, предназначенные для сервера. Сервер может зафиксировать эту информацию, а затем отправить клиента на соответствующую страницу. Этот метод, называемый перенаправлением, весьма эффективен для решения многих задач.

Уже известный вам Delphi-класс TWebResponse включает метод SendRedirect, который в качестве параметра принимает одну строку. Эта строка содержит полный адрес узла, на который должен быть перенаправлен клиент. Метод SendRedirect объявляется следующим образом:

procedure SendRedirect(const URL: string); virtual; abstract;

Этот метод объявляется как абстрактный в модуле HTTPAPP.PAS и определяется в модуле ISAPIAPP.PAS.

Для Web-сервера не составит труда обработать HTTP-запрос с параметрами, а затем передать его на узел, имя которого указано в одном из параметров. Например, если на одной из страниц находится GIF-файл, а все графическое изображение представляет собой гиперссылку, то назначаемый ей URL будет выглядеть примерно так:

<А HREF="http://www.somecoolplace.com/transfer?www.borland.com.coolgif.gif&borland"><IMG SRC="coolgif.gif"></A>

При этом обработчик события OnAction в приложении Web-сервера с именем /transfer может выглядеть следующим образом:

procedure TWebModule1.WebModule1WebActionItem3Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
═════{ Обрабатываем параметр запроса Request.QueryFields[l], возможно размещая его в базе данных. Он содержит имя GIF-файла, на котором пользователь щелкнул мышье. Вам стоит отслеживать GIF-файлы, которые являются самыми эффективными - так можно зафиксировать, сколько ссыпок получает отдельная компания из вашего узла, запомнив имя компании, которая является автором запроса, в параметре Request.QueryFields[2]. }
═════Response.SendRedirect(Request.QueryFields[0]);
end;

Используя этот метод, можно создать общее приложение передачи, которое обрабатывает каждое рекламное объявление на узле. Конечно, помимо рекламных, для вызова метода SendRedirect() могут быть и другие причины. Этот метод можно использовать для фиксации специфических запросов URL и любых данных, которые могут быть связаны с определенными гиперссылками. При этом достаточно собрать данные из свойства QueryFields, а затем при необходимости вызвать метод SendRedirect().




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

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017