Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
JAVA_Ekz_voprosy.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
717.82 Кб
Скачать
  1. Заголовки http-запросов и ответов. Назначение. Принципы применения.

Заголовки запроса

Заголовки http-запроса представляют собой предшествующие телу запроса пары «имя-значение», которые формируются клиентом web-приложения и пересылаются серверу. В общем случае одному заголовку может соответствовать несколько значений.

В простых сервлете или jsp-странице разработчику доступны только три метода для работы с заголовками запроса: getHeader (получить первое значение заголовка по егоимени), setHeaders (получить все значения заголовка по имени), и getHeaderNames (получить все имена заголовков запроса).

Если же запрос формируется с помощью классов пакета httpclient (раздел 3.4), то метод addRequestHeader объекта типа GetMethod (или PostMethod) позволяет добавить собственные заголовки запроса, как это сделано в примере на рис. 5.13.

Frame16

Рис. 5.13. Фрагмент сервлета, формирующего заголовки запроса

На рис. 5.13 представлен фрагмент сервлета, формирующего три дополнительных заголовка запроса с именами MyHeader1, MyHeader2, MyHeader3. В данном примере все значения заголовком имеют строковый формат.

Пусть сформированный http-запрос отправляется на обработку сервлету Jjj, фрагмент которого представленном на рис. 5.14, а ответ сформированный сервлетом Jjj обрабатывается и выводится в окно браузера снова в вызывающем сервлете (рис. 5.13).

Frame17

Рис. 5.14. Фрагмент сервлета, обрабатывающего заголовки запроса

В фрагменте сервлета на рис. 5.14 используется методы getHeaderNames и getHeader для формирования ответа, который направляется в вызывающий сервлет (рис. 5.13). Вывод сервлета на рис. 5.13 в окно браузера будет примерно таким, как на рис. 5.15.

Рис. 5.15.Наменования и значения заголовков запроса

Кроме строкового значения заголовков запроса могут быть целочисленного типа или типа Date. В этих случаях можно воспользоваться двумя другими разновидностями метода getHeader: getIntHeader или getDateHeader.

Заголовки ответа

Как и http-запрос http-ответ всегда можно дополнить собственными заголовками, которые потом могут быть получены и обработаны на стороне клиента. Н рис. 5.16 изображен фрагмент сервлета формирующего заголовки ответа.

Frame18

Рис. 5.16. Фрагмент сервлета, формирующего заголовки ответа

В общем случае заголовку с одним именем может соответствовать несколько значений. Заголовки могут быть сформированы с помощью метода addHeader, как это сделано в примере на рис. 5.16, или метода setHeader. В первом случае, заголовок создается (если заголовка с таким именем нет) или добавляется следующее значение (если такой заголовок уже есть). Метод setHeader тоже создает новый заголовок (если заголовка с таким именем нет) или заменяет значение.

Доступ к заголовкам ответа, осуществляется точно по такому же принципу, что и к заголовкам запроса. На рис. 5.17 приводится вывод заголовков ответа, полученных с помощью метода getHeaderNames и getHeader.

Рис. 5.17. Заголовки ответа

Перед использованием собственных заголовком ответа, как и в случае заголовков запроса, следует ознакомиться с существующими ограничениями на их имена, накладываемые протоколом HTTP и web-сервером.

Кроме перечисленных методов объект типа HttpServletResponse обладает рядом других полезных свойств и методов, с которыми можно ознакомиться в спецификации Servlet API [12].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]