English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Когда браузер запрашивает веб-страницу, он отправляет сетевому серверу серию информации, которую нельзя напрямую прочитать,因为这些 данные передаются в качестве части заголовков HTTP. Вы можете ознакомиться с протоколом HTTP, чтобы получить больше информации.
В таблице ниже перечислены некоторые важные элементы заголовков информации на стороне браузера, которые часто встречаются в сетевом программировании в будущем:
Информация | Описание |
---|---|
Accept | Определение MIME-типа, который может обрабатывать браузер или другой клиент. Его значение обычно равно image/png или image/jpeg |
Accept-Charset | Указывает набор символов, который будет использоваться браузером. Например, ISO-8859-1 |
Accept-Encoding | Указывает тип кодирования. Обычно его значение равно gzip илиcompress |
Accept-Language | Указывает предпочтительный язык клиента, servlet предпочитает возвращать результаты, составленные на этом языке, если servlet поддерживает этот язык. Например, en, en-us, ru и т.д. |
Authorization | Идентифицирует различных пользователей при доступе к веб-страницам, защищенным паролем |
Connection | Указывает, может ли клиент обрабатывать HTTP持久ное соединение. ПERSISTENT соединение позволяет клиенту или браузеру получить несколько файлов в одном запросе.Keep-Alive Показывает, что используется持久ное соединение |
Content-Length | Только для запросов POST, показывает количество байт данных POST |
Cookie | Возврат cookies, отправленных ранее браузеру, на сервер |
Host | Указывает имя хоста и порт в исходном URL |
If-Modified-Since | Указывает, что клиент нуждается в этой странице только в том случае, если она была изменена в указанную дату. Сервер отправляет код 304 клиенту, что означает, что нет обновленных ресурсов |
If-Unmodified-Since | Противоположно If-Modified-Since, операция будет успешной только в том случае, если документ не был изменен с указанной даты |
Referer | Обозначает URL запрашиваемой страницы. Например, если вы настранице 1, и нажали ссылку на страницу 2, то URL страницы 1 будет включен в информацию заголовка запроса браузера для страницы 2 |
User-Agent | Используется для различения запросов, отправленных различными браузерами или клиентами, и для предоставления различного контента для различных типов браузеров |
Объект request является примером класса javax.servlet.http.HttpServletRequest. Whenever the client requests a page, the JSP engine generates a new object to represent this request.
Объект request предоставляет ряд методов для получения HTTP заголовков, включая данные форм, cookies, методы HTTP и т.д.
Далее будут рассмотрены некоторые методы получения HTTP заголовков, которые часто используются в программировании на JSP. Подробности см. в таблице ниже:
Номер | Метод& Описание |
---|---|
1 | Cookie[] getCookies() Возврат массива всех Cookie клиента |
2 | Enumeration getAttributeNames() Возвращает множество всех имен свойств объекта request |
3 | Enumeration getHeaderNames() Возвращает множество всех заголовков HTTP |
4 | Enumeration getParameterNames() Возвращает множество всех параметров запроса |
5 | HttpSession getSession() Возвращает объект session, соответствующий request, если его нет, то создает новый |
6 | HttpSession getSession(boolean create) Возвращает объект session, соответствующий request, если его нет и параметр create установлен в true, то возвращает новый объект session |
7 | Locale getLocale() Возвращает объект Locale текущей страницы, который можно установить в response |
8 | Object getAttribute(String name) Возвращает значение свойства с именем name, если его нет, то возвращает null |
9 | ServletInputStream getInputStream() Возвращает поток ввода запроса |
10 | String getAuthType() Возвращает имя схемы аутентификации, используемой для защиты servlet, например "BASIC", "SSL" или null, если JSP не установлено保护ные меры |
11 | String getCharacterEncoding() Возвращает имя набора символов кодирования character encoding request |
12 | String getContentType() Возвращает MIME-тип主体的 request, если известен, то возвращает null |
13 | String getContextPath() Возвращает контекстный путь, указанный в URI request |
14 | String getHeader(String name) Возвращает заголовок информации, указанный name |
15 | String getMethod() Возвращает метод HTTP этого request, например GET, POST или PUT |
16 | String getParameter(String name) Возвращает параметр, указанный name в этом request, если его нет, то возвращает null |
17 | String getPathInfo() Возвращает дополнительные пути, связанные с URL этого request |
18 | String getProtocol() Возвращает имя и версию используемого протокола для этого request |
19 | String getQueryString() Возвращает строку запроса, содержащуюся в URL request |
20 | String getRemoteAddr() Возвращает IP-адрес клиента |
21 | String getRemoteHost() Возвращает полное имя клиента |
22 | String getRemoteUser() Возвращает пользователя, прошедшего удаленную аутентификацию, если пользователь не аутентифицирован, возвращает null |
23 | String getRequestURI() Возвращает URI request |
24 | String getRequestedSessionId() Возвращает ID сессии, указанного request |
25 | String getServletPath() Возвращает путь servlet, запрошенный |
26 | String[] getParameterValues(String name) Возвращает все значения параметра с указанным именем, если параметр не существует, возвращает null |
27 | boolean isSecure() Возвращает, использовался ли request через зашифрованный канал, например HTTPS |
28 | int getContentLength() Возвращает количество байтов, содержащихся в теле request, если не известно, возвращает -1 |
29 | int getIntHeader(String name) Возвращает значение заголовка request с указанным именем |
30 | int getServerPort() Возвращает номер порта сервера |
В этом примере мы будем использовать метод getHeaderNames() класса HttpServletRequest для чтения HTTP-заголовков. Этот метод возвращает текущие заголовки HTTP-запроса в виде перечисления.
После получения объекта Enumeration, используется стандартный способ для遍ения объекта Enumeration, с помощью метода hasMoreElements() определяются моменты остановки, а с помощью метода nextElement() получают имя каждого параметра.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Сайт основного курса (oldtoolbag.com)</title> </head> <body> <h2>Пример запроса заголовков HTTP</h2> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>Название заголовка</th><th>Значения заголовка</th> </tr> <% Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } %> </table> </body> </html>
Адрес main.jsp вернет следующий результат:
Вы можете попробовать другие методы класса HttpServletRequest здесь.