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