Действия 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 используются следующие методы:
- Cookie [] getCookies () — возвращает массив, содержащий объекты cookie, отправленные клиентом
- Перечисление getAttributeNames () — содержит перечисление имен атрибутов для запроса
- Перечисление getHeaderNames () — содержит перечисление имен заголовков.
- Перечисление getParameterNames () — содержит перечисление получения имен параметров в запросе.
- HttpSessiongetSession () — возвращает текущий сеанс, связанный с запросом, или, если сеанс отсутствует, он создаст новый.
- Locale getLocale () — возвращает предпочтительный языковой стандарт, в котором клиент будет принимать содержимое. Он был назначен ответу. По умолчанию это значение будет языковым стандартом сервера по умолчанию.
- Объект getAttribute (String name) — возвращает значение именованного атрибута как объекта.
- ServletInputStreamgetInputStream () — извлекает тело запроса в виде двоичных данных.
- String getAuthType () — возвращает имя схемы аутентификации для защиты сервлета
- Строка getCharacterEncoding () — возвращает имя кодировки символов, используемой в теле запроса.
- Строка getContentType () — возвращает MIME-тип тела запроса.
- Строка getContextPath () — возвращает часть запроса URI, указывает контекстный путь URI
- String getHeader (String name) — возвращает заголовок запроса в виде строки
- String getMethod () — возвращает имя метода HTTP, например, GET, POST
- String getParameter (String name) — возвращает параметр запроса в виде строки.
- String getPathInfo () — возвращает информацию о пути, связанную с URL
- String getQueryString () — возвращает строку запроса, связанную с URL-адресом запроса
- Строка getServletPath () — возвращает часть URL-адреса запроса, который вызывает JSP
- String [] getParameterValues (String name) — возвращает массив строковых объектов, содержащих значения, которые имеет параметр запроса
Пример:
В приведенном ниже примере мы используем разные методы, используя объект запроса
- <%@ 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
- Когда запрос обрабатывается, а затем генерируется ответ с веб-сервера. Он состоит из строки состояния, заголовков ответа, пустой строки и документа.
- Это объект HTTPServletResponseclass, который является объектом ответа.
- Строка состояния — это версия HTML.
Заголовки ответа упомянуты ниже:
заголовок | Описание |
Позволять | Он определяет методы запроса, такие как GET, POST, который запрашивает сервер |
Кэш-контроль | Ответный документ может быть кэширован. Это может быть публично, приватно и без кеша. Отсутствие кэша указывает, что документ не должен кэшироваться |
соединение | Он указывает, должен ли браузер использовать saveHTTPConnections или нет. Значение Close означает, что браузер не должен использовать постоянный в HTTPConnections, а «keep-alive» означает использование постоянных подключений. |
Content-диспозиция | Спросить пользователя, сохранять ли ответ на диск или нет |
Content-Encoding | Страница должна быть закодирована во время передачи |
Content-Length | Количество байтов в ответе |
Тип содержимого | Определяет тип ответа MIME |
Истекает | Указывает, до какого времени контент должен считаться устаревшим и не должен кэшироваться |
Последнее изменение | Указывает, когда документ был последний раз изменен |
Расположение | Он должен быть включен во все ответы, у которых код состояния имеет 300 в качестве кода состояния |
обновление | Указывает, как найти обновленную страницу. |
Retry-после | Может использоваться с ответом 503, чтобы сообщить клиенту, как скоро он может повторить запрос |
Set-печенья | Определяет cookie, связанный со страницей |
Ниже приведены методы, использующие объект ответа:
- String encodeRedirectURL (String URL) — кодирует URL в методе redirectURL.
- String encodeURL (String URL) — кодирует URL, включая идентификатор сеанса.
- Boolean containsHeader (String name) — содержит заголовок в JSP или нет.
- Boolean isCommited () — ответ принят или нет.
- Void addCookie (Cookie cookie) — добавляет cookie в ответ
- Void addDateHeader (String name, String value) — добавляет имя и значение даты заголовка ответа
- Void addHeader (String name, String value) — добавляет заголовок ответа с именем и значением
- Void addIntHeader (String name, int value) — добавляет заголовок ответа с именем и целочисленным значением
- Void flushBuffer () — заставляет содержимое в буфере выводить на клиент.
- Void reset () — очищает данные в буфере.
- Void resetBuffer — очищает буфер содержимого в ответе без очистки кодов состояния.
- Void sendError (intsc, Stringmsg) — отправляет клиенту ответ об ошибке, используя код состояния.
- Void sendRedirect (String location) — отправляет временный ответ перенаправления клиенту.
- Void setBufferSize (int size) — устанавливает размер буфера тела
- Void setCharacterEncoding (String charset) — устанавливает кодировку символов
- Void setContentType (String type) — устанавливает тип содержимого ответа
- Void setContentLength (intlen) — устанавливает длину содержимого ответа
- Void setLocale (Locale lcl) — устанавливает тип локали ответа
- Void 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: используя объект ответа, flushbuffer используется для принудительной загрузки содержимого буфера в клиент
Строка кода 16: используя объект ответа, мы получаем объект записи, который получает вывод в потоке вывода
Код строки 18: используя объект ответа, мы получаем тип содержимого, т.е. MIME-тип объекта ответа
Строка кода 21: используя объект ответа, он используется для автозагрузки каждые 5 секунд, так как 5 задается как второй параметр
Когда вы выполните приведенный выше код, вы получите следующий вывод:
Вывод:
- Здесь мы получаем вывод, так как он получен от объекта записи из 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 не поддерживается
Некоторые из его методов перечислены ниже:
- Открытый void setStatus (intstatusCode)
Он устанавливает код состояния в зависимости от того, что мы хотим установить на этой странице JSP. Это даст нам сообщение о коде состояния, который был установлен
- Открытый void sendRedirect (String URL)
Он генерирует 302 ответ вместе с заголовком местоположения, дающим URL нового документа
- Public void 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: используя объект ответа, мы отправляем ошибку на страницу с двумя параметрами.
- Код состояния — это может быть любой из вышеперечисленных. В этом случае мы описали как 404
- Сообщение — это может быть любое конкретное сообщение, которое мы хотим показать ошибку
Если вы выполните приведенный выше код, вы получите следующий вывод:
Вывод:
Здесь мы получаем код ошибки 404, который был отправлен из кода и также отображает сообщение «Страница гуру не найдена», увиденное в выходных данных.
Резюме:
- В этой статье мы узнали о клиентском запросе и ответе сервера о том, как перехватывается запрос и как обрабатываются ответы.
- Кроме того, мы узнали о кодах состояния HTTP, чтобы показать коды ошибок или коды успеха для определенного файла.