Учебники

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

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

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

S.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 включается в заголовок Referer, когда браузер запрашивает веб-страницу 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 включается в заголовок Referer, когда браузер запрашивает веб-страницу 2.

User-Agent

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

Объект HttpServletRequest

Объект запроса является экземпляром объекта javax.servlet.http.HttpServletRequest . Каждый раз, когда клиент запрашивает страницу, механизм JSP создает новый объект для представления этого запроса.

Объект запроса предоставляет методы для получения информации заголовка HTTP, включая данные формы, файлы cookie, методы HTTP и т. Д.

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

S.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-запросом.

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

<%@ page import = "java.io.*,java.util.*" %>

<html>
   <head>
      <title>HTTP Header Request Example</title>
   </head>

   <body>
      <center>
         <h2>HTTP Header Request Example</h2>
         
         <table width = "100%" border = "1" align = "center">
            <tr bgcolor = "#949494">
               <th>Header Name</th>
               <th>Header Value(s)</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>
      </center>
   
   </body>
</html>

Давайте теперь поместим приведенный выше код в main.jsp и попробуем получить к нему доступ.

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

Название заголовка Значение заголовка (ов)
принимать * / *
принимают язык ан-нас
Агент пользователя Mozilla / 4.0 (совместимый; MSIE 7.0; Windows NT 5.1; Trident / 4.0; InfoPath.2; MS-RTC LM 8)
Accept-Encoding gzip, выкачать
хозяин локальный: 8080
соединение Keep-Alive
кэш-контроль нет кэша

Вы можете попробовать работать над всеми методами одинаково.