Читайте также:
|
|
Иногда требуется в сервлете выполнить html-запрос для вызова другого сервлета или jsp-страницы. При этом вызываемый объект не обязательно должен находиться (и соответственно исполняется) на том же web-сервере, что и вызывающий сервлет. Такой вызов принципиально отличается от переопределения запроса, рассмотренного выше.
На рис.3.26. изображены схемы взаимодействия сервлетов в двух случаях: при переопределении запроса (a) и при генерации запроса (б). Пунктирными линиями на рисунке изображаются запросы, а сплошными движение данных ответа. В обоих случаях предполагается, что браузер вызывает сервлет Ppp, который в зависимости от значения передаваемого параметра в первом случае переопределяет запрос на сервлеты Mmm или Fff, а во втором – генерирует http-запрос, вызывающий Mmm или Fff.
Рис. 3.26. Схемы взаимодействия сервлетов: a) при переопределении запроса(RequestDispatcher rd = response.getRrequestDispatcher(); rd.forward(request, "url);) б) при генерации запроса.(httpclient)
Обратите внимание, что при переопределении запроса (a), связь браузера с сервлетом Ppp фактически прекращается и данные ответа сервлетов Mmm или Fff поступают на обработку ему напрямую. Если бы, например, Mmm, в свою очередь переопределял запрос на другой сервлет, то данные ответа очередного сервлета в цепочке переопределений все равно бы поступили непосредственно браузеру. Более того, попытка вывода ответа сервлетом переопределяющим запрос вызовет ошибку исполнения.
В случае генерации запроса (б), ответы сервлетов Mmm и Fff поступают и обрабатываются в вызывающем сервлете Ppp и только сгенерированный Ppp ответ может быть интерпретирован браузером.
Для генерации http-запросов будем использовать пакет org.appache.commons.httpclient (далее httpclient). На момент подготовки пособия доступной была версия 3.1 пакета, выгружаемая в виде файла commons-httpclient-3.1.jar. В процессе своей работы классы httpclient вызывают методы еще двух пакетов org.appache.commons.logging и org.appache.commons.codec.
Дата добавления: 2015-09-11; просмотров: 80 | Поможем написать вашу работу | Нарушение авторских прав |