Учебники

Сервлеты – Клиентский HTTP-запрос

Когда браузер запрашивает веб-страницу, он отправляет на веб-сервер много информации, которая не может быть прочитана напрямую, поскольку эта информация передается как часть заголовка HTTP-запроса. Вы можете проверить протокол HTTP для получения дополнительной информации об этом.

Ниже приводится важная информация заголовка, которая поступает со стороны браузера, и вы бы очень часто использовали ее в веб-программировании.

Sr.No. Заголовок и описание
1

принимать

Этот заголовок определяет типы MIME, которые могут обрабатывать браузер или другие клиенты. Значения image / png или image / jpeg – две наиболее распространенные возможности.

2

Accept-Charset

Этот заголовок определяет наборы символов, которые браузер может использовать для отображения информации. Например, ISO-8859-1.

3

Accept-Encoding

Этот заголовок определяет типы кодировок, которые браузер знает, как обрабатывать. Значения gzip или compress являются двумя наиболее распространенными возможностями.

4

Accept-Language

Этот заголовок определяет предпочтительные языки клиента в случае, если сервлет может выдавать результаты более чем на одном языке. Например, en, en-us, ru и т. Д.

5

авторизация

Этот заголовок используется клиентами для идентификации себя при доступе к защищенным паролем веб-страницам.

6

соединение

Этот заголовок указывает, может ли клиент обрабатывать постоянные соединения HTTP. Постоянные соединения позволяют клиенту или другому браузеру получать несколько файлов за один запрос. Значение Keep-Alive означает, что следует использовать постоянные соединения.

7

Content-Length

Этот заголовок применим только к запросам POST и дает размер данных POST в байтах.

8

печенье

Этот заголовок возвращает куки на серверы, которые ранее отправили их в браузер.

9

хозяин

Этот заголовок указывает хост и порт, как указано в исходном URL.

10

If-Modified-Since

Этот заголовок указывает, что клиент хочет страницу, только если она была изменена после указанной даты. Сервер отправляет код 304, который означает Неизмененный заголовок, если более новый результат не доступен.

11

Если-Unmodified-С

Этот заголовок является противоположностью If-Modified-Since; он указывает, что операция должна завершиться успешно, только если документ старше указанной даты.

12

Referer

Этот заголовок указывает URL-адрес ссылающейся веб-страницы. Например, если вы находитесь на веб-странице 1 и нажимаете ссылку на веб-страницу 2, URL-адрес веб-страницы 1 включается в заголовок Referrer, когда браузер запрашивает веб-страницу 2.

13

User-Agent

Этот заголовок идентифицирует браузер или другой клиент, делающий запрос, и может использоваться для возврата различного контента в разные типы браузеров.

принимать

Этот заголовок определяет типы MIME, которые могут обрабатывать браузер или другие клиенты. Значения image / png или image / jpeg – две наиболее распространенные возможности.

Accept-Charset

Этот заголовок определяет наборы символов, которые браузер может использовать для отображения информации. Например, ISO-8859-1.

Accept-Encoding

Этот заголовок определяет типы кодировок, которые браузер знает, как обрабатывать. Значения gzip или compress являются двумя наиболее распространенными возможностями.

Accept-Language

Этот заголовок определяет предпочтительные языки клиента в случае, если сервлет может выдавать результаты более чем на одном языке. Например, en, en-us, ru и т. Д.

авторизация

Этот заголовок используется клиентами для идентификации себя при доступе к защищенным паролем веб-страницам.

соединение

Этот заголовок указывает, может ли клиент обрабатывать постоянные соединения HTTP. Постоянные соединения позволяют клиенту или другому браузеру получать несколько файлов за один запрос. Значение Keep-Alive означает, что следует использовать постоянные соединения.

Content-Length

Этот заголовок применим только к запросам POST и дает размер данных POST в байтах.

печенье

Этот заголовок возвращает куки на серверы, которые ранее отправили их в браузер.

хозяин

Этот заголовок указывает хост и порт, как указано в исходном URL.

If-Modified-Since

Этот заголовок указывает, что клиент хочет страницу, только если она была изменена после указанной даты. Сервер отправляет код 304, который означает Неизмененный заголовок, если более новый результат не доступен.

Если-Unmodified-С

Этот заголовок является противоположностью If-Modified-Since; он указывает, что операция должна завершиться успешно, только если документ старше указанной даты.

Referer

Этот заголовок указывает URL-адрес ссылающейся веб-страницы. Например, если вы находитесь на веб-странице 1 и нажимаете ссылку на веб-страницу 2, URL-адрес веб-страницы 1 включается в заголовок Referrer, когда браузер запрашивает веб-страницу 2.

User-Agent

Этот заголовок идентифицирует браузер или другой клиент, делающий запрос, и может использоваться для возврата различного контента в разные типы браузеров.

Методы чтения заголовка HTTP

Существуют следующие методы, которые можно использовать для чтения заголовка HTTP в вашей программе сервлета. Эти методы доступны с объектом HttpServletRequest

Sr.No. Метод и описание
1

Cookie [] getCookies ()

Возвращает массив, содержащий все объекты Cookie, которые клиент отправил с этим запросом.

2

Перечисление getAttributeNames ()

Возвращает перечисление, содержащее имена атрибутов, доступных для этого запроса.

3

Перечисление getHeaderNames ()

Возвращает перечисление всех имен заголовков, которые содержит этот запрос.

4

Перечисление getParameterNames ()

Возвращает перечисление объектов String, содержащих имена параметров, содержащихся в этом запросе

5

HttpSession getSession ()

Возвращает текущий сеанс, связанный с этим запросом, или, если запрос не имеет сеанса, создает его.

6

HttpSession getSession (логическое создание)

Возвращает текущий HttpSession, связанный с этим запросом, или, если текущий сеанс отсутствует и значение create равно true, возвращает новый сеанс.

7

Locale getLocale ()

Возвращает предпочтительный языковой стандарт, в котором клиент будет принимать содержимое, на основе заголовка Accept-Language.

8

Объект getAttribute (String name)

Возвращает значение именованного атрибута в виде объекта или ноль, если атрибута с указанным именем не существует.

9

ServletInputStream getInputStream ()

Извлекает тело запроса в виде двоичных данных, используя ServletInputStream.

10

Строка getAuthType ()

Возвращает имя схемы аутентификации, используемой для защиты сервлета, например, «BASIC» или «SSL», или null, если JSP не был защищен.

11

Строка getCharacterEncoding ()

Возвращает имя кодировки символов, используемой в теле этого запроса.

12

Строка getContentType ()

Возвращает MIME-тип тела запроса или null, если тип не известен.

13

Строка getContextPath ()

Возвращает часть URI запроса, которая указывает контекст запроса.

14

Строка getHeader (имя строки)

Возвращает значение указанного заголовка запроса в виде строки.

15

Строка getMethod ()

Возвращает имя метода HTTP, с помощью которого был сделан этот запрос, например, GET, POST или PUT.

16

Строка getParameter (имя строки)

Возвращает значение параметра запроса в виде строки или ноль, если параметр не существует.

17

Строка getPathInfo ()

Возвращает любую дополнительную информацию о пути, связанную с URL-адресом, отправленным клиентом, когда он сделал этот запрос

18

Строка getProtocol ()

Возвращает имя и версию протокола запроса.

19

Строка getQueryString ()

Возвращает строку запроса, которая содержится в URL запроса после пути.

20

Строка getRemoteAddr ()

Возвращает IP-адрес клиента, отправившего запрос.

21

Строка getRemoteHost ()

Возвращает полное имя клиента, отправившего запрос.

22

Строка getRemoteUser ()

Возвращает имя пользователя, сделавшего этот запрос, если пользователь прошел проверку подлинности, или NULL, если пользователь не прошел проверку подлинности.

23

Строка getRequestURI ()

Возвращает часть URL этого запроса от имени протокола до строки запроса в первой строке HTTP-запроса.

24

Строка getRequestedSessionId ()

Возвращает идентификатор сеанса, указанный клиентом.

25

Строка getServletPath ()

Возвращает часть URL этого запроса, которая вызывает JSP.

26

String [] getParameterValues ​​(имя строки)

Возвращает массив объектов String, содержащий все значения, которые имеет данный параметр запроса, или ноль, если параметр не существует.

27

логическое isSecure ()

Возвращает логическое значение, указывающее, был ли этот запрос сделан с использованием безопасного канала, такого как HTTPS.

28

int getContentLength ()

Возвращает длину в байтах тела запроса и становится доступной входному потоку или -1, если длина неизвестна.

29

int getIntHeader (String name)

Возвращает значение указанного заголовка запроса как int.

30

int getServerPort ()

Возвращает номер порта, по которому был получен этот запрос.

Cookie [] getCookies ()

Возвращает массив, содержащий все объекты Cookie, которые клиент отправил с этим запросом.

Перечисление getAttributeNames ()

Возвращает перечисление, содержащее имена атрибутов, доступных для этого запроса.

Перечисление getHeaderNames ()

Возвращает перечисление всех имен заголовков, которые содержит этот запрос.

Перечисление getParameterNames ()

Возвращает перечисление объектов String, содержащих имена параметров, содержащихся в этом запросе

HttpSession getSession ()

Возвращает текущий сеанс, связанный с этим запросом, или, если запрос не имеет сеанса, создает его.

HttpSession getSession (логическое создание)

Возвращает текущий HttpSession, связанный с этим запросом, или, если текущий сеанс отсутствует и значение create равно true, возвращает новый сеанс.

Locale getLocale ()

Возвращает предпочтительный языковой стандарт, в котором клиент будет принимать содержимое, на основе заголовка Accept-Language.

Объект getAttribute (String name)

Возвращает значение именованного атрибута в виде объекта или ноль, если атрибута с указанным именем не существует.

ServletInputStream getInputStream ()

Извлекает тело запроса в виде двоичных данных, используя ServletInputStream.

Строка getAuthType ()

Возвращает имя схемы аутентификации, используемой для защиты сервлета, например, «BASIC» или «SSL», или null, если JSP не был защищен.

Строка getCharacterEncoding ()

Возвращает имя кодировки символов, используемой в теле этого запроса.

Строка getContentType ()

Возвращает MIME-тип тела запроса или null, если тип не известен.

Строка getContextPath ()

Возвращает часть URI запроса, которая указывает контекст запроса.

Строка getHeader (имя строки)

Возвращает значение указанного заголовка запроса в виде строки.

Строка getMethod ()

Возвращает имя метода HTTP, с помощью которого был сделан этот запрос, например, GET, POST или PUT.

Строка getParameter (имя строки)

Возвращает значение параметра запроса в виде строки или ноль, если параметр не существует.

Строка getPathInfo ()

Возвращает любую дополнительную информацию о пути, связанную с URL-адресом, отправленным клиентом, когда он сделал этот запрос

Строка getProtocol ()

Возвращает имя и версию протокола запроса.

Строка getQueryString ()

Возвращает строку запроса, которая содержится в URL запроса после пути.

Строка getRemoteAddr ()

Возвращает IP-адрес клиента, отправившего запрос.

Строка getRemoteHost ()

Возвращает полное имя клиента, отправившего запрос.

Строка getRemoteUser ()

Возвращает имя пользователя, сделавшего этот запрос, если пользователь прошел проверку подлинности, или NULL, если пользователь не прошел проверку подлинности.

Строка getRequestURI ()

Возвращает часть URL этого запроса от имени протокола до строки запроса в первой строке HTTP-запроса.

Строка getRequestedSessionId ()

Возвращает идентификатор сеанса, указанный клиентом.

Строка getServletPath ()

Возвращает часть URL этого запроса, которая вызывает JSP.

String [] getParameterValues ​​(имя строки)

Возвращает массив объектов String, содержащий все значения, которые имеет данный параметр запроса, или ноль, если параметр не существует.

логическое isSecure ()

Возвращает логическое значение, указывающее, был ли этот запрос сделан с использованием безопасного канала, такого как HTTPS.

int getContentLength ()

Возвращает длину в байтах тела запроса и становится доступной входному потоку или -1, если длина неизвестна.

int getIntHeader (String name)

Возвращает значение указанного заголовка запроса как int.

int getServerPort ()

Возвращает номер порта, по которому был получен этот запрос.

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

Ниже приведен пример, который использует метод getHeaderNames () HttpServletRequest для чтения информации заголовка HTTP. Этот метод возвращает перечисление, которое содержит информацию заголовка, связанную с текущим HTTP-запросом.

Как только у нас будет Enumeration, мы можем зациклить Enumeration стандартным способом, используя метод hasMoreElements (), чтобы определить, когда остановиться, и используя метод nextElement (), чтобы получить имя каждого параметра.

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
 
// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "HTTP Header Request Example";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";

      out.println(docType +
         "<html>\n" +
         "<head><title>" + title + "</title></head>\n"+
         "<body bgcolor = \"#f0f0f0\">\n" +
         "<h1 align = \"center\">" + title + "</h1>\n" +
         "<table width = \"100%\" border = \"1\" align = \"center\">\n" +
         "<tr bgcolor = \"#949494\">\n" +
         "<th>Header Name</th><th>Header Value(s)</th>\n"+
         "</tr>\n"
      );
 
      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");
      }
      out.println("</table>\n</body></html>");
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      doGet(request, response);
   }
}

Теперь вызов вышеупомянутого сервлета приведет к следующему результату –