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

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

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

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

Заголовки в JSP

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

заголовок Описание Пример
Принять Он определяет типы MIME, которые может обрабатывать браузер или другие клиенты. Изображение/png или изображение/jpeg
Принять-кодировка Он использует набор символов, используемый браузером для отображения информации. ISO-8859-1
Принять-Кодирование Он указывает тип кодировки, обрабатываемой браузером. Gzip или сжатие
Принять-язык Он указывает язык, указанный клиентами. Ру,en_us
Авторизация Заголовок, используемый клиентами при попытке доступа к веб-страницам, защищенным паролем.  
Связь Он указывает, может ли клиент обрабатывать постоянные HTTP-соединения (браузер может получать несколько файлов). Поддерживать жизнь
Длина содержимого Применяется для отправки запросов. Он дает размер почтовых данных в байтах.  
Cookie Возвращает файлы cookie на сервер (те, которые ранее были отправлены в браузер)  
Хозяин Указывает хост и порт исходного URL-адреса.  
Если изменено с тех пор Это указывает на то, что требуется только страница, если она была изменена или модифицирована.  
Если не изменялось с тех пор Это указывает на то, что страница требуется только в том случае, если она не была изменена или модифицирована.  
Referrer Указывает URL-адрес ссылающейся URL-страницы.  
Агент пользователя Идентифицирует запрос браузера или клиента  

Методы HTTP-заголовка в JSP

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

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

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

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

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>

<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
	HttpSession gurusession = request.getSession(); 
	out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
	Locale gurulocale = request.getLocale ();
	out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
	String path = request.getPathInfo(); 
	out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); 
	String lpath = request.get();
	out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); 
	String servername = request.getServerName(); 
	out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
	int portname = request.getServerPort(); 
	out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
	Enumeration hnames = request.getHeaderNames();
	while(hnames.hasMoreElements()) { 
		String paramName = (String)hnames.nextElement();
		out.print ("<tr><td>" + paramName + "</td>" );
		
		String paramValue = request.getHeader(paramName);
		out.println("<td> " + paramValue + "</td></tr>");
	}

%>

Расшифровка кода:

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

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

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

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

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

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

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

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

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

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

Результат:

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

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

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

Заголовки ответов в JSP

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

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

Методы заголовка HTTP-ответа в JSP

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

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

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

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

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
	// Set refresh,autoload time as 5 seconds
	response.setIntHeader("Refresh", 5);
	//Get current time
	Date dt = new Date();
	out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>

Расшифровка кода:

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

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

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

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

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

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

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

Вывод:

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

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

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

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

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

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

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

Методы кода состояния HTTP в JSP

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

  1. Публичный недействительный setStatus (intstatusCode): Он устанавливает код статуса, который мы хотим установить на этой странице JSP. Это даст нам сообщение о коде статуса, который был установлен
  2. Public void sendRedirect (URL-адрес строки): Он генерирует ответ 302 вместе с заголовком местоположения, указывающим URL нового документа.
  3. Публичная недействительность sendError(intcode,Stringmsg): Он отправляет код состояния вместе с коротким сообщением и форматирует его внутри HTML-документа.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

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

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Status Code</title>
</head>
<body>
<% response.sendError(404,"Guru Page Not Found"); %>
</body>
</html>

Расшифровка кода:

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

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

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

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

Вывод:

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

Резюме

  • В этой статье мы узнали о запросе клиента и ответе сервера, о том, как перехватывается запрос и как манипулируются ответами.
  • Действия JSP которые используют конструкции синтаксиса XML для управления поведением механизма сервлетов.
  • Когда веб-страница запрашивается, она отправляет информацию на веб-сервер в заголовке HTTP.
  • Когда запрос обрабатывается, а затем генерируется ответ от веб-сервера. Он состоит из строки состояния, заголовков ответа, пустой строки и документа.
  • Когда запрос обрабатывается, генерируется ответ. Строка состояния ответа состоит из версии HTTP, кода состояния и связанного сообщения.