Клієнтський запит JSP

⚡ Розумний підсумок

Запити JSP-клієнта та відповіді сервера використовують елементи дій JSP для керування механізмом сервлетів. Браузер надсилає інформацію через HTTP-заголовки, сервер повертає рядок стану та заголовки, а коди стану HTTP повідомляють про результат кожного запиту.

  • 📨 Запит клієнта: Браузер надсилає дані на сервер у заголовках HTTP-запитів, які зчитуються через HttpServletRequest.
  • 🧾 Заголовки запиту: Клієнт описують такі атрибути: Accept (Прийняти), Accept-language (Мова прийняття), Connection (З’єднання), Cookie (Соокіє), Host (Хост) та User-agent (Агент користувача).
  • 📤 Відповідь сервера: HttpServletResponse повертає рядок стану, заголовки відповіді та документ.
  • 🔧 Методи реагування: addHeader(), sendRedirect(), sendError() та setStatus() формують відповідь.
  • 🔢 Статус Codes: Згруповані від 100 до 599; поширені включають 200, 301, 404 та 500.
  • 🧪 Приклади: Робочі JSP-сторінки зчитують заголовки, встановлюють інтервал оновлення та надсилають помилку 404.

Клієнтський запит JSP

Дії JSP використовують конструкції в синтаксисі XML для керування поведінкою сервлет-двигуна. Ми детальніше розглянемо різні елементи дій JSP, такі як запит клієнта, відповідь сервера та коди стану HTTP.

Клієнтський запит JSP

  • Коли веб-сторінка запитується, вона надсилає інформацію на веб-сервер у заголовку HTTP.
  • Ми можемо використовувати цю інформацію за допомогою об’єкта HTTPServletRequest.
  • Інформація, надіслана браузером, зберігається в заголовку запиту HTTP.
  • Ми використовуємо різні заголовки для надсилання інформації до об’єкта запиту.

Заголовки в JSP

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

Header Опис Приклад
Прийняти Він визначає типи MIME, які можуть обробляти браузер або інші клієнти Зображення/png або зображення/jpeg
Accept-charset Він використовує набір символів, який використовує браузер для відображення інформації ISO-8859-1
Accept- Кодування Він визначає тип кодування, який обробляє браузер Gzip або стиснути
Accept-мова Він визначає мову, визначену клієнтами En, en_us
Авторизація Заголовок, який використовується клієнтами під час спроби отримати доступ до захищених паролем веб-сторінок
Connection Він вказує, чи може клієнт обробляти постійні з’єднання HTTP (браузер може отримувати кілька файлів) Залишатися живим
Контент-довжина Застосовується до запитів на публікацію. Він дає розмір даних публікації в байтах
Печиво Повертає файли cookie на сервер (ті, які раніше були надіслані в браузер)
Господар Вказує хост і порт оригіналу URL
Якщо змінено з тих пір Це вказує на те, що потрібна лише сторінка, якщо вона була змінена чи модифікована
Якщо не змінено з тих пір Це вказує на те, що сторінка потрібна лише в тому випадку, якщо вона не була змінена чи модифікована
посилається Вказує URL посилання URL сторінка
Користувач-агент Ідентифікує браузер або клієнт, який робить запит

Методи заголовків HTTP в JSP

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

  1. Cookie[] getCookies() – повертає масив, що містить об’єкти cookie, надіслані клієнтом
  2. Перерахування getAttributeNames() – містить перелік назв атрибутів для запиту
  3. Перерахування getHeaderNames() – містить перелік імен заголовка.
  4. Перерахування getParameterNames() – містить перелік імен параметрів отримання в запиті.
  5. HttpSession getSession() – повертає поточний сеанс, пов’язаний із запитом, або, якщо сеансу немає, створює новий.
  6. Локаль getLocale() – повертає бажану мову, у якій клієнт прийматиме вміст. Її було призначено відповіді. За замовчуванням значенням буде стандартна мова сервера.
  7. Об’єкт getAttribute(ім’я рядка) – повертає значення іменованого атрибута як об’єкт.
  8. ServletInputStream getInputStream() – отримує тіло запиту у вигляді двійкових даних.
  9. Рядок getAuthType() – повертає назву схеми автентифікації для захисту сервлета
  10. Рядок getCharacterEncoding() – повертає назву кодування символів, використаного в тілі запиту.
  11. Рядок getContentType() – повертає тип MIME тіла запиту.
  12. Рядок getContextPath() – повертає частину URI запиту, що вказує контекстний шлях URI
  13. String getHeader (String name) – повертає заголовок запиту як рядок
  14. Рядок getMethod() – повертає назву методу HTTP, наприклад GET, POST
  15. String getParameter(String name) – повертає параметр запиту у вигляді рядка.
  16. Рядок getPathInfo() – повертає інформацію про шлях, пов'язану з URL
  17. Рядок getQueryString() – повертає рядок запиту, пов'язаний із запитом URL
  18. Рядок getServletPath() – повертає частину URLзапиту, який викликає JSP
  19. 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>");
    }

%>

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

Code Лінія 17: Використовуючи об’єкт запиту, ми отримуємо об’єкт сеансу цього конкретного сеансу та отримуємо значення об’єкта цього сеансу

Code Лінія 19: Використовуючи об'єкт запиту, ми отримуємо локаль цього конкретного сеансу, тобто локаль en_US для цього JSP.

Code Лінія 21: Використовуючи об'єкт request, ми отримуємо інформацію про шлях для цього JSP. У цьому випадку він дорівнює null, оскільки шляху для нього немає. URL Згаданий.

Code Лінія 23: Використовуючи об'єкт запиту, ми отримуємо контекстний шлях, тобто кореневий шлях

Code Лінія 25: Використовуючи об’єкт запиту, ми отримуємо ім’я сервера.

Code Лінія 27: Використовуючи об’єкт запиту, ми отримуємо порт сервера.

Code Рядок 29-35: Використовуючи об’єкт запиту, ми отримуємо імена заголовків, які виходять як перерахування, і, отже, ми отримуємо всі значення заголовків у іменах заголовків.

Тут ми отримуємо всі значення заголовка як a Печиво, хост, підключення, прийняти мову, прийняти кодування.

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

Клієнтський запит JSP

вихід:

Ми отримуємо ряд значень, як-от ім’я сеансу, ім’я локалі, ім’я шляху, ім’я сервера, ім’я порту, хост, контекстний шлях і всі значення заголовка цього JSP.

Відповідь сервера JSP

  • Коли запит обробляється, а потім генерується відповідь із веб-сервера. Він складається з рядка стану, заголовків відповіді, порожнього рядка та документа.
  • Це об'єкт класу HTTPServletResponse, який є об'єктом відповіді.
  • Рядок стану є версією HTML.

Заголовки відповідей у ​​JSP

Заголовки відповідей у ​​JSP згадані нижче:

Header Опис
Дозволити Він визначає методи запиту, такі як GET, POST, які запитує сервер
Кеш-контроль Документ відповіді можна кешувати. Він може бути публічним, приватним і без кешу. Відсутність кешу означає, що документ не слід кешувати
Connection Він вказує, чи повинен браузер використовувати збережені HTTP-підключення чи ні. Значення Close вказує на те, що браузер не повинен використовувати постійні з’єднання у HTTP-з’єднаннях, а «keep-alive» означає використання постійних з’єднань
Зміст-диспозиція Щоб запитати користувача, чи зберігати відповідь на диск чи ні
Контент-кодування Сторінка має бути закодована під час передачі
Контент-довжина Кількість байтів у відповіді
Тип вмісту Він визначає тип відповіді MIME
Закінчується Вказує, до якого часу вміст має вважатися застарілим і його не слід кешувати
Останні зміни Він вказує, коли документ востаннє змінювався
Місце проведення Його слід включити до всіх відповідей, код статусу яких становить 300
оновлення Він визначає, як знайти оновлену сторінку.
Повторити після Його можна використовувати з відповіддю 503, щоб повідомити клієнту, як скоро він зможе повторити запит
Набір-печиво Визначає файл cookie, пов’язаний зі сторінкою

Методи заголовка відповіді HTTP в JSP

Нижче наведено методи в JSP, які використовують об’єкт відповіді:

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

приклад:

У цьому прикладі ми розглядаємо різні методи getLocale, flushbuffer, getWriter, отриматиТипКонтенту, встановитиЗаголовокІнта.

<%@ 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: Використовуючи об’єкт відповіді, flushbuffer використовується для примусового передачі вмісту буфера клієнту

Code Лінія 16: Використовуючи об’єкт відповіді, ми отримуємо об’єкт запису, який отримує вивід у потоці виводу

Code Лінія 18: Використовуючи об’єкт відповіді, ми отримуємо тип вмісту, тобто тип MIME об’єкта відповіді

Code Лінія 21: Використовуючи об’єкт відповіді, він використовується для автозавантаження кожні 5 секунд, оскільки 5 встановлено як другий параметр

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

Відповідь сервера JSP

вихід:

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

Стан HTTP JSP Codes

  • Коли запит обробляється, генерується відповідь. Рядок статусу відповіді складається з версії 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 не підтримується

Статус HTTP Code Методи в JSP

Деякі з методів коду стану в JSP перераховані нижче:

  1. Публічний недійсний setStatus(int statusCode): Він встановлює код статусу, який ми хочемо встановити на цій сторінці JSP. Це дасть нам повідомлення про встановлений код статусу
  2. Публічний недійсний sendRedirect(String URL): Він генерує відповідь 302 разом із заголовком місцезнаходження, що надає URL нового документа
  3. Публічна недійсна помилка sendError(інтегральний код, рядок повідомлення): Він надсилає код статусу разом із коротким повідомленням і форматується в документі 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: Використовуючи об’єкт відповіді, ми надсилаємо помилку на сторінку з двома параметрами.

  1. Код статусу – це може бути будь-який із наведених вище. У цьому випадку ми описали як 404
  2. Повідомлення – це може бути будь-яке конкретне повідомлення, у якому ми хочемо показати помилку

Якщо ви виконаєте наведений вище код, ви отримаєте такий результат:

Стан HTTP JSP Codes

вихід:

Тут ми отримуємо код помилки 404, який був надісланий з коду, а також відображається «Guru У виведених даних відображається повідомлення «Сторінку не знайдено».

Поширені запитання

HttpServletRequest містить дані, що надсилаються клієнтом на сервер, такі як заголовки та параметри. HttpServletResponse містить дані, що надсилаються назад із сервера, включаючи коди стану, заголовки відповідей та вміст документа.

Код стану 404 означає, що запитуваний ресурс не знайдено на сервері. У JSP ви можете надіслати його явно за допомогою response.sendError(404, “message”), щоб відобразити власну сторінку "не знайдено".

Використайте об'єкт запиту: getHeaderNames() повертає перелік імен заголовків, а getHeader(name) повертає кожне значення заголовка. Перебираємо імена, щоб прочитати кожен заголовок, надісланий клієнтом.

Штучний інтелект може аналізувати журнали заголовків, позначати відсутні або неправильно налаштовані заголовки, виявляти проблеми безпеки, такі як відсутність контролю кешу, та узагальнювати шаблони трафіку, допомагати...ping розробники швидше налагоджують та оптимізують обробку запитів і відповідей.

Так. Штучний інтелект може генерувати JSP-скриптлети, які зчитують параметри та заголовки запитів, встановлюють заголовки відповідей та надсилають коди стану з опису простою мовою, які розробники потім перевіряють на правильність та безпеку.

Підсумуйте цей пост за допомогою: