Запрос клиента JSP
⚡ Умное резюме
В JSP-запросах и ответах серверах используются элементы действий JSP для управления сервлетным движком. Браузер отправляет информацию через HTTP-заголовки, сервер возвращает строку состояния и заголовки, а коды состояния HTTP сообщают о результате каждого запроса.
Действия 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() – содержит перечисление получения имен параметров в запросе.
- HttpSession getSession() – возвращает текущий сеанс, связанный с запросом, или, если сеанса нет, он создаст новый.
- Локаль getLocale() – возвращает предпочтительную локаль, в которой клиент будет принимать контент. Она была назначена ответу. По умолчанию значение будет локалью по умолчанию сервера.
- Объект getAttribute (имя строки) – возвращает значение именованного атрибута как объекта.
- ServletInputStream getInputStream() – Извлекает тело запроса в виде двоичных данных.
- Строка 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>"); } %>
Расшифровка кода:
Code Линия 17: Используя объект запроса, мы получаем объект сеанса этого конкретного сеанса и получаем значение объекта этого сеанса.
Code Линия 19: Используя объект запроса, мы получаем локаль конкретной сессии, а именно локаль en_US для данного JSP-файла.
Code Линия 21: Используя объект запроса, мы получаем информацию о пути к этому JSP-файлу. В данном случае он равен null, поскольку путь к файлу отсутствует. URL упоминается.
Code Линия 23: Используя объект запроса, мы получаем контекстный путь, то есть корневой путь.
Code Линия 25: Используя объект запроса, мы получаем имя сервера.
Code Линия 27: Используя объект запроса, мы получаем порт сервера.
Code Линия 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(Нить URL) - кодирует URL в перенаправленииURL метод.
- кодирование строкиURL(Нить URL) - кодирует URL путем указания идентификатора сессии.
- Логическое значение containsHeader(имя строки) – содержит ли он заголовок в JSP или нет.
- Логическое значение isCommited() – был зафиксирован ответ или нет.
- void addCookie(Cookie cookie) – добавляет cookie к ответу
- Void addDateHeader (имя строки, значение строки) – добавляет имя и значение даты заголовка ответа
- Void addHeader (имя строки, значение строки) – добавляет заголовок ответа с именем и значением
- Void addIntHeader (имя строки, значение int) – добавляет заголовок ответа с именем и целочисленным значением
- Пустой флешBuffer() - принудительно выводит содержимое буфера на клиент.
- Пустой сброс() – очищает данные в буфере.
- Сброс пустотыBuffer – очищает буфер содержимого в ответе без очистки кодов состояния.
- Void sendError(int sc,String msg) – отправляет ответ об ошибке клиенту, используя код состояния.
- Void sendRedirect (расположение строки) – отправляет клиенту ответ о временном перенаправлении.
- Пустой наборBufferРазмер (целочисленный размер) – устанавливает размер буфера тела
- Void setCharacterEncoding (кодировка строки) – устанавливает кодировку символов
- Void setContentType (тип String) – устанавливает тип контента ответа
- Void setContentLength(int len) – устанавливает длину содержимого ответа
- Void setLocale(Locale lcl) – устанавливает тип локали ответа
- Void setStatus(int sc) – устанавливает код состояния ответа
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
В этом примере мы рассмотрим различные методы: getLocale, flushbuffer, getWriter, getContentType, 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>
Расшифровка кода:
Code Линия 13: Используя объект ответа, мы получаем объект локали этого сеанса JSP.
Code Линия 15: Используя объект ответа, flashbuffer используется для принудительной передачи содержимого буфера клиенту.
Code Линия 16: Используя объект ответа, мы получаем объект записи, который получает вывод в выходной поток.
Code Линия 18: Используя объект ответа, мы получаем тип контента, т.е. тип MIME объекта ответа.
Code Линия 21: Используя объект ответа, он используется для автоматической загрузки каждые 5 секунд, поскольку в качестве второго параметра установлено значение 5.
При выполнении приведенного выше кода вы получите следующий результат:
Выход:
- Здесь мы получаем результат, поскольку он поступает от объекта записи из функции получения.Writer, что позволяет получить объект, который мы можем вывести в выходной поток.
- Мы получаем локаль как en_us и тип контента как text/html.
- Мы получаем кодировку ISO 8859.
- Сегодняшняя дата как текущая дата.
Статус HTTP JSP Codes
- Когда запрос обрабатывается, генерируется ответ. Строка состояния ответа состоит из версии 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 Code Методы в JSP
Некоторые из методов кода состояния в JSP перечислены ниже:
- Public void setStatus(int statusCode): Он устанавливает код статуса, который мы хотим установить на этой странице JSP. Это даст нам сообщение о коде статуса, который был установлен
- Public void sendRedirect(String URL): Он генерирует ответ 302 вместе с заголовком Location, предоставляя URL нового документа
- Public void sendError(int code,String msg): Он отправляет код состояния вместе с коротким сообщением и форматирует его внутри 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>
Расшифровка кода:
Code Линия 10: Используя объект ответа, мы отправляем ошибку на страницу с двумя параметрами.
- Код состояния – это может быть любой из вышеперечисленных. В этом случае мы описали как 404
- Сообщение. Это может быть любое конкретное сообщение, которое мы хотим показать об ошибке.
Если вы выполните приведенный выше код, вы получите следующий результат:
Выход:
Здесь мы получаем код ошибки 404, который был отправлен из системы, и также отображается сообщение "Guru В выходных данных отображается сообщение «Страница не найдена».




