Учебники

12) Запрос клиента JSP

Действия JSP, которые используют конструкции в синтаксисе XML для управления поведением механизма сервлета. Мы узнаем более подробно о различных элементах JSP Action, таких как запрос клиента, ответ сервера, коды состояния HTTP.

В этом уроке вы узнаете

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

  • Когда веб-страница запрашивается, она отправляет информацию на веб-сервер в заголовке HTTP.
  • Мы можем использовать эту информацию, используя объект HTTPServletRequest.
  • Информация, отправляемая браузером, сохраняется в заголовке запроса HTTP-запроса.
  • Мы используем разные заголовки для отправки информации в объект запроса.

Различные заголовки описаны ниже:

заголовок Описание пример
принимать Он определяет типы MIME, которые могут обрабатывать браузер или другие клиенты Изображение / PNG или изображение / JPEG
Accept-кодировок Он использует набор символов, используемый браузером для отображения информации ISO-8859-1
Принять — Кодировка Указывает тип кодировки, обрабатываемой браузером. Gzip или сжимать
Accept-язык Указывает клиентам указанный язык En, en_us
авторизация Заголовок, используемый клиентами при попытке доступа к защищенным паролем веб-страницам
соединение Указывает, может ли клиент обрабатывать постоянные HTTP-соединения (браузер может получать несколько файлов) Keep-Alive
Content-Length Применимо для размещения запросов. Это дает размер почтовых данных байтов
печенье Возвращает куки на сервер (те, которые были ранее отправлены в браузер)
хозяин Определяет хост и порт исходного URL
Если изменено с Это означает, что требуется только страница, если она была изменена или изменена
Если не изменено с Это означает, что страница требуется только в том случае, если она не была изменена или изменена
Referrer Указывает URL ссылающейся страницы URL
Агент пользователя Идентифицирует браузер или клиент, делающий запрос

Для чтения заголовка HTTP на странице JSP используются следующие методы:

  1. Cookie [] getCookies () — возвращает массив, содержащий объекты cookie, отправленные клиентом
  2. Перечисление getAttributeNames () — содержит перечисление имен атрибутов для запроса
  3. Перечисление getHeaderNames () — содержит перечисление имен заголовков.
  4. Перечисление getParameterNames () — содержит перечисление получения имен параметров в запросе.
  5. HttpSessiongetSession () — возвращает текущий сеанс, связанный с запросом, или, если сеанс отсутствует, он создаст новый.
  6. Locale getLocale () — возвращает предпочтительный языковой стандарт, в котором клиент будет принимать содержимое. Он был назначен ответу. По умолчанию это значение будет языковым стандартом сервера по умолчанию.
  7. Объект getAttribute (String name) — возвращает значение именованного атрибута как объекта.
  8. ServletInputStreamgetInputStream () — извлекает тело запроса в виде двоичных данных.
  9. String getAuthType () — возвращает имя схемы аутентификации для защиты сервлета
  10. Строка getCharacterEncoding () — возвращает имя кодировки символов, используемой в теле запроса.
  11. Строка getContentType () — возвращает MIME-тип тела запроса.
  12. Строка getContextPath () — возвращает часть запроса URI, указывает контекстный путь URI
  13. String getHeader (String name) — возвращает заголовок запроса в виде строки
  14. String getMethod () — возвращает имя метода HTTP, например, GET, POST
  15. String getParameter (String name) — возвращает параметр запроса в виде строки.
  16. String getPathInfo () — возвращает информацию о пути, связанную с URL
  17. String getQueryString () — возвращает строку запроса, связанную с URL-адресом запроса
  18. Строка getServletPath () — возвращает часть URL-адреса запроса, который вызывает JSP
  19. String [] getParameterValues ​​(String name) — возвращает массив строковых объектов, содержащих значения, которые имеет параметр запроса

Пример:

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

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
  2. <%@ page import="java.io.* java.util.*" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>Client Request Guru JSP</title>
  8. </head>
  9. <body>
  10. <h2>Client Request Guru JSP</h2>
  11.  
  12. <table border="1">
  13. <tr>
  14. <th>guru header</th><th>guru header Value(s)</th>
  15. </tr>
  16. <%
  17. HttpSession gurusession = request.getSession();
  18. out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
  19. Locale gurulocale = request.getLocale ();
  20. out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
  21. String path = request.getPathInfo();
  22. out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>");
  23. String lpath = request.get();
  24. out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>");
  25. String servername = request.getServerName();
  26. out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
  27. int portname = request.getServerPort();
  28. out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
  29. Enumeration hnames = request.getHeaderNames();
  30. while(hnames.hasMoreElements()) {
  31. String paramName = (String)hnames.nextElement();
  32. out.print ("<tr><td>" + paramName + "</td>" );
  33. String paramValue = request.getHeader(paramName);
  34. out.println("<td> " + paramValue + "</td></tr>");
  35. }
  36.  
  37. %>

Пояснение к коду:

Строка кода 17: используя объект запроса, мы получаем объект сеанса этого конкретного сеанса и получаем значение объекта этого сеанса

Строка кода 19: Используя объект запроса, мы получаем локаль для этой конкретной локали сеанса i.een_US для этой JSP.

Строка кода 21: используя объект запроса, мы получаем информацию о пути для этого JSP. В этом случае это значение равно нулю, так как не указан путь для упомянутого URL.

Строка кода 23: используя объект запроса, мы получаем контекстный путь, т.е. корневой путь

Строка кода 25: Используя объект запроса, мы получаем имя сервера.

Строка кода 27: используя объект запроса, мы получаем порт сервера.

Строка кода 29-35: Используя объект запроса, мы получаем имена заголовков, которые появляются как перечисление, и, следовательно, мы получаем все значения заголовков в именах заголовков.

При этом мы получаем все значения заголовка как cookie, хост, соединение, принимаем язык, принимаем кодировку.

Когда вы выполните приведенный выше код, вы получите следующий вывод:

Действие JSP - загрузка файла, фильтр JSP, запрос клиента, ответ сервера, обработка файлов cookie, обработка дат

Выход :

Мы получаем ряд значений, таких как имя сеанса, имя локали, путь, имя сервера, имя порта, хост, путь к контексту и все значения заголовков этого JSP.

Ответ сервера JSP

  • Когда запрос обрабатывается, а затем генерируется ответ с веб-сервера. Он состоит из строки состояния, заголовков ответа, пустой строки и документа.
  • Это объект HTTPServletResponseclass, который является объектом ответа.
  • Строка состояния — это версия HTML.

Заголовки ответа упомянуты ниже:

заголовок Описание
Позволять Он определяет методы запроса, такие как GET, POST, который запрашивает сервер
Кэш-контроль Ответный документ может быть кэширован. Это может быть публично, приватно и без кеша. Отсутствие кэша указывает, что документ не должен кэшироваться
соединение Он указывает, должен ли браузер использовать saveHTTPConnections или нет. Значение Close означает, что браузер не должен использовать постоянный в HTTPConnections, а «keep-alive» означает использование постоянных подключений.
Content-диспозиция Спросить пользователя, сохранять ли ответ на диск или нет
Content-Encoding Страница должна быть закодирована во время передачи
Content-Length Количество байтов в ответе
Тип содержимого Определяет тип ответа MIME
Истекает Указывает, до какого времени контент должен считаться устаревшим и не должен кэшироваться
Последнее изменение Указывает, когда документ был последний раз изменен
Расположение Он должен быть включен во все ответы, у которых код состояния имеет 300 в качестве кода состояния
обновление Указывает, как найти обновленную страницу.
Retry-после Может использоваться с ответом 503, чтобы сообщить клиенту, как скоро он может повторить запрос
Set-печенья Определяет cookie, связанный со страницей

Ниже приведены методы, использующие объект ответа:

  1. String encodeRedirectURL (String URL) — кодирует URL в методе redirectURL.
  2. String encodeURL (String URL) — кодирует URL, включая идентификатор сеанса.
  3. Boolean containsHeader (String name) — содержит заголовок в JSP или нет.
  4. Boolean isCommited () — ответ принят или нет.
  5. Void addCookie (Cookie cookie) — добавляет cookie в ответ
  6. Void addDateHeader (String name, String value) — добавляет имя и значение даты заголовка ответа
  7. Void addHeader (String name, String value) — добавляет заголовок ответа с именем и значением
  8. Void addIntHeader (String name, int value) — добавляет заголовок ответа с именем и целочисленным значением
  9. Void flushBuffer () — заставляет содержимое в буфере выводить на клиент.
  10. Void reset () — очищает данные в буфере.
  11. Void resetBuffer — очищает буфер содержимого в ответе без очистки кодов состояния.
  12. Void sendError (intsc, Stringmsg) — отправляет клиенту ответ об ошибке, используя код состояния.
  13. Void sendRedirect (String location) — отправляет временный ответ перенаправления клиенту.
  14. Void setBufferSize (int size) — устанавливает размер буфера тела
  15. Void setCharacterEncoding (String charset) — устанавливает кодировку символов
  16. Void setContentType (String type) — устанавливает тип содержимого ответа
  17. Void setContentLength (intlen) — устанавливает длину содержимого ответа
  18. Void setLocale (Locale lcl) — устанавливает тип локали ответа
  19. Void setStatus (intsc) — устанавливает код состояния ответа

Пример:

В этом примере мы рассмотрим различные методы getLocale, flushbuffer, getWriter, get ContentType, setIntHeader.

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
  2. <%@ page import="java.io.* java.util.*" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>Guru Action Response</title>
  8. </head>
  9. <body>
  10. <center>
  11. <h2>Guru Response</h2>
  12. <%
  13. Locale lcl = response.getLocale();
  14. out.println("Locale is : " + lcl + "\n");
  15. response.flushBuffer();
  16. PrintWriter output = response.getWriter();
  17. output.println("This is from writer object");
  18. String type = response.getContentType();
  19. out.println("The content type : " + type + "\n");
  20. // Set refresh,autoload time as 5 seconds
  21. response.setIntHeader("Refresh", 5);
  22. //Get current time
  23. Date dt = new Date();
  24. out.println("Today's date is : " +dt.toString() + "\n");
  25. %>
  26. </center>
  27. </body>
  28. </html>

Пояснение к коду:

Строка кода 13: используя объект ответа, мы получаем объект локали этого сеанса JSP

Строка кода 15: используя объект ответа, flushbuffer используется для принудительной загрузки содержимого буфера в клиент

Строка кода 16: используя объект ответа, мы получаем объект записи, который получает вывод в потоке вывода

Код строки 18: используя объект ответа, мы получаем тип содержимого, т.е. MIME-тип объекта ответа

Строка кода 21: используя объект ответа, он используется для автозагрузки каждые 5 секунд, так как 5 задается как второй параметр

Когда вы выполните приведенный выше код, вы получите следующий вывод:

Действие JSP - загрузка файла, фильтр JSP, запрос клиента, ответ сервера, обработка файлов cookie, обработка дат

Вывод:

  • Здесь мы получаем вывод, так как он получен от объекта записи из getWriter, который дает нам объект, и мы можем вывести его в выходной поток.
  • Мы получаем локаль как en_us и тип контента как text / html
  • Мы получаем кодировку ISO 8859
  • Сегодняшняя дата как текущая дата.

Коды состояния JSP HTTP

  • Когда запрос обрабатывается, генерируется ответ. Строка состояния ответа состоит из версии HTTP, кода состояния и связанного сообщения.
  • Сообщение напрямую связано с кодом состояния и версией HTTP и определяется сервером.
  • По умолчанию 200 устанавливается как код состояния в JSP, поэтому нам не нужно устанавливать его явно.
  • Мы можем установить как метод response.setStatus ()

Коды попадают в следующие 5 категорий:

  • 100-199 — Здесь клиент указывает, что он должен ответить каким-либо действием
  • 200-299 — означает, что запрос выполнен успешно
  • 300-399 — они используются для файлов, которые были перемещены, и обычно содержат заголовок местоположения, указывающий новый адрес
  • 400-499 — Указывает на ошибку клиента
  • 500-599 — указывает на ошибку сервера

Некоторые из общих кодов состояния приведены ниже:

  • 200 — показывает, что все в порядке
  • 301 — Он переехал навсегда
  • 304 — Не изменяется с момента последнего изменения
  • ошибка 400, неверный запрос
  • 404 Не Найдено
  • 405 — Метод не найден
  • внутренняя ошибка сервера 500
  • 503 Служба Недоступна
  • 505 — версия HTTP не поддерживается

Некоторые из его методов перечислены ниже:

  1. Открытый void setStatus (intstatusCode)

    Он устанавливает код состояния в зависимости от того, что мы хотим установить на этой странице JSP. Это даст нам сообщение о коде состояния, который был установлен

  2. Открытый void sendRedirect (String URL)

    Он генерирует 302 ответ вместе с заголовком местоположения, дающим URL нового документа

  3. Public void sendError (intcode, Stringmsg)

    Он отправляет код состояния вместе с коротким сообщением и форматируется внутри документа HTML.

Пример:

В этом примере мы явно отправляем ошибку на страницу JSP.

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>Guru Status Code</title>
  8. </head>
  9. <body>
  10. <% response.sendError(404,"Guru Page Not Found"); %>
  11. </body>
  12. </html>

Пояснение к коду:

Строка кода 10: используя объект ответа, мы отправляем ошибку на страницу с двумя параметрами.

  1. Код состояния — это может быть любой из вышеперечисленных. В этом случае мы описали как 404
  2. Сообщение — это может быть любое конкретное сообщение, которое мы хотим показать ошибку

Если вы выполните приведенный выше код, вы получите следующий вывод:

Действие JSP - загрузка файла, фильтр JSP, запрос клиента, ответ сервера, обработка файлов cookie, обработка дат

Вывод:

Здесь мы получаем код ошибки 404, который был отправлен из кода и также отображает сообщение «Страница гуру не найдена», увиденное в выходных данных.

Резюме:

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