Заголовки http-запроса представляют собой предшествующие телу запроса пары «имя-значение», которые формируются клиентом web-приложения (браузером) и пересылаются серверу. В общем случае одному заголовку может соответствовать несколько значений.
В простых сервлетах или jsp-странице разработчику доступны только три метода для работы с заголовками запроса: getHeader (получить первое значение заголовка по егоимени), setHeaders (получить все значения заголовка по имени), и getHeaderNames (получить все имена заголовков запроса).
Если же запрос формируется с помощью классов пакета httpclient ( раздел 3.4 ), тотод addRequestHeader объекта типа GetMethod (или PostMethod)позволяетдобавить собственные заголовки запроса, как это сделано в примере.
protected void doGet(HttpServletRequest rq, HttpServletResponse rs)
throws ServletException, IOException {
HttpClient hc = new HttpClient ();
String uri = "https://localhost:8080/ANaive/Jjj";
GetMethod gm = new GetMethod (uri);
gm.addRequestHeader("MyHeader1", "MyHeadetValue1");
gm.addRequestHeader("MyHeader2", "MyHeadetValue2");
gm.addRequestHeader("MyHeader3", "MyHeadetValue3");
hc.executeMethod(gm);
rs.setContentType("text/html");
InOutServlet inout = new InOutServlet (rs.getOutputStream(),
gm.getResponseBodyAsStream());
inout.perform();
}
На представлен фрагмент сервлета, формирующего три дополнительных заголовка запроса с именами MyHeader1, MyHeader2, MyHeader3. В данном примере все значения заголовком имеют строковый формат.
Кроме строкового значения заголовков запроса могут быть целочисленного типа или типа Date. В этих случаях можно воспользоваться двумя другими разновидностями метода getHeader: getIntHeader или getDateHeader.
Заголовки ответа
Каки http-запрос http-ответ всегда можно дополнить собственными заголовками, которые потом могут быть получены и обработаны на стороне клиента.
protected void service(HttpServletRequest rq, HttpServletResponse rs)
throws ServletException, IOException {
rs.setContentType("text/html");
rs.addHeader("Jjj-Header1", "Jjj-HeaderValue1");
rs.addHeader("Jjj-Header2", "Jjj-HeaderValue2");
}