English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Клиентские запросы JSP

Когда браузер запрашивает веб-страницу, он отправляет сетевому серверу серию информации, которую нельзя напрямую прочитать,因为这些 данные передаются в качестве части заголовков 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 Используется для различения запросов, отправленных различными браузерами или клиентами, и для предоставления различного контента для различных типов браузеров

Класс HttpServletRequest

Объект 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. Подробности см. в таблице ниже:

НомерМетод& Описание
1Cookie[] getCookies() Возврат массива всех Cookie клиента
2Enumeration getAttributeNames() Возвращает множество всех имен свойств объекта request
3Enumeration getHeaderNames() Возвращает множество всех заголовков HTTP
4Enumeration getParameterNames() Возвращает множество всех параметров запроса
5HttpSession getSession() Возвращает объект session, соответствующий request, если его нет, то создает новый
6HttpSession getSession(boolean create) Возвращает объект session, соответствующий request, если его нет и параметр create установлен в true, то возвращает новый объект session
7Locale getLocale() Возвращает объект Locale текущей страницы, который можно установить в response
8Object getAttribute(String name) Возвращает значение свойства с именем name, если его нет, то возвращает null
9ServletInputStream getInputStream() Возвращает поток ввода запроса
10String getAuthType() Возвращает имя схемы аутентификации, используемой для защиты servlet, например "BASIC", "SSL" или null, если JSP не установлено保护ные меры
11String getCharacterEncoding() Возвращает имя набора символов кодирования character encoding request
12String getContentType() Возвращает MIME-тип主体的 request, если известен, то возвращает null
13String getContextPath() Возвращает контекстный путь, указанный в URI request
14String getHeader(String name) Возвращает заголовок информации, указанный name
15String getMethod() Возвращает метод HTTP этого request, например GET, POST или PUT
16String getParameter(String name) Возвращает параметр, указанный name в этом request, если его нет, то возвращает null
17String getPathInfo() Возвращает дополнительные пути, связанные с URL этого request
18String getProtocol() Возвращает имя и версию используемого протокола для этого request
19String getQueryString() Возвращает строку запроса, содержащуюся в URL request
20String getRemoteAddr() Возвращает IP-адрес клиента
21String getRemoteHost() Возвращает полное имя клиента
22String getRemoteUser() Возвращает пользователя, прошедшего удаленную аутентификацию, если пользователь не аутентифицирован, возвращает null
23String getRequestURI() Возвращает URI request
24String getRequestedSessionId() Возвращает ID сессии, указанного request
25String getServletPath() Возвращает путь servlet, запрошенный
26String[] getParameterValues(String name) Возвращает все значения параметра с указанным именем, если параметр не существует, возвращает null
27boolean isSecure() Возвращает, использовался ли request через зашифрованный канал, например HTTPS
28int getContentLength() Возвращает количество байтов, содержащихся в теле request, если не известно, возвращает -1
29int getIntHeader(String name) Возвращает значение заголовка request с указанным именем
30int getServerPort() Возвращает номер порта сервера

Пример HTTP-заголовков

В этом примере мы будем использовать метод 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 здесь.