Клієнтський запит JSP
Дії JSP, які використовують конструкції в синтаксисі XML для керування поведінкою механізму сервлетів. Ми докладніше дізнаємось про різні елементи JSP Action, такі як запит клієнта, відповідь сервера, коди стану 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 використовуються такі методи:
- Cookie[] getCookies() – повертає масив, що містить об’єкти cookie, надіслані клієнтом
- Перерахування getAttributeNames() – містить перелік назв атрибутів для запиту
- Перерахування getHeaderNames() – містить перелік імен заголовка.
- Перерахування getParameterNames() – містить перелік імен параметрів отримання в запиті.
- HttpSessiongetSession() – повертає поточний сеанс, пов’язаний із запитом, або, якщо сеансу немає, створює новий.
- Локаль getLocale() – повертає бажану мову, у якій клієнт прийматиме вміст. Її було призначено відповіді. За замовчуванням значенням буде стандартна мова сервера.
- Об’єкт getAttribute(ім’я рядка) – повертає значення іменованого атрибута як об’єкт.
- ServletInputStreamgetInputStream() – отримує тіло запиту як двійкові дані.
- Рядок getAuthType() – повертає назву схеми автентифікації для захисту сервлета
- Рядок getCharacterEncoding() – повертає назву кодування символів, використаного в тілі запиту.
- Рядок getContentType() – повертає тип MIME тіла запиту.
- Рядок getContextPath() – повертає частину URI запиту, що вказує контекстний шлях URI
- String getHeader (String name) – повертає заголовок запиту як рядок
- Рядок getMethod() – повертає назву методу HTTP, наприклад GET, POST
- String getParameter(String name) – повертає параметр запиту у вигляді рядка.
- Рядок getPathInfo() – повертає інформацію про шлях, пов'язану з URL
- Рядок 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: Використовуючи об’єкт запиту, ми отримуємо локаль цього конкретного сеансу, тобто локаль een_US для цього JSP.
Рядок коду 21: Використовуючи об’єкт запиту, ми отримуємо інформацію про шлях для цього JSP. У цьому випадку він дорівнює нулю, оскільки не вказано шлях для URL-адреси.
Рядок коду 23: Використовуючи об'єкт запиту, ми отримуємо контекстний шлях, тобто кореневий шлях
Рядок коду 25: Використовуючи об’єкт запиту, ми отримуємо ім’я сервера.
Рядок коду 27: Використовуючи об’єкт запиту, ми отримуємо порт сервера.
Рядок коду 29-35: Використовуючи об’єкт запиту, ми отримуємо імена заголовків, які виходять як перерахування, і, отже, ми отримуємо всі значення заголовків у іменах заголовків.
Тут ми отримуємо всі значення заголовка як a Печиво, хост, підключення, прийняти мову, прийняти кодування.
Коли ви виконуєте наведений вище код, ви отримуєте такий результат:
Вихід:
Ми отримуємо ряд значень, як-от ім’я сеансу, ім’я локалі, ім’я шляху, ім’я сервера, ім’я порту, хост, контекстний шлях і всі значення заголовка цього JSP.
Відповідь сервера JSP
- Коли запит обробляється, а потім генерується відповідь із веб-сервера. Він складається з рядка стану, заголовків відповіді, порожнього рядка та документа.
- Це об’єкт HTTPServletResponseclass, який є об’єктом відповіді.
- Рядок стану є версією HTML.
Заголовки відповідей у JSP
Заголовки відповідей у JSP згадані нижче:
Header | Опис |
---|---|
Дозволити | Він визначає методи запиту, такі як GET, POST, які запитує сервер |
Кеш-контроль | Документ відповіді можна кешувати. Він може бути публічним, приватним і без кешу. Відсутність кешу означає, що документ не слід кешувати |
Connection | Він вказує, чи повинен браузер використовувати збережені HTTP-підключення чи ні. Значення Close вказує на те, що браузер не повинен використовувати постійні з’єднання у HTTP-з’єднаннях, а «keep-alive» означає використання постійних з’єднань |
Зміст-диспозиція | Щоб запитати користувача, чи зберігати відповідь на диск чи ні |
Контент-кодування | Сторінка має бути закодована під час передачі |
Контент-довжина | Кількість байтів у відповіді |
Тип вмісту | Він визначає тип відповіді MIME |
Закінчується | Вказує, до якого часу вміст має вважатися застарілим і його не слід кешувати |
Останні зміни | Він вказує, коли документ востаннє змінювався |
Місце проведення | Його слід включити до всіх відповідей, код статусу яких становить 300 |
оновлення | Він визначає, як знайти оновлену сторінку. |
Повторити після | Його можна використовувати з відповіддю 503, щоб повідомити клієнту, як скоро він зможе повторити запит |
Набір-печиво | Визначає файл cookie, пов’язаний зі сторінкою |
Методи заголовка відповіді HTTP в JSP
Нижче наведено методи в JSP, які використовують об’єкт відповіді:
- String encodeRedirectURL(String URL) – кодує URL-адресу в методі redirectURL.
- String encodeURL(String URL) – кодує URL-адресу, включаючи ідентифікатор сеансу.
- Логічний містить заголовок (назва рядка) – він містить заголовок у JSP чи ні.
- Boolean isCommited() – відповідь була зафіксована чи ні.
- Void addCookie(Cookie cookie) – додає файл cookie до відповіді
- Void addDateHeader (ім’я рядка, значення рядка) – додає назву дати та значення заголовка відповіді
- Void addHeader (ім’я рядка, значення рядка) – додає заголовок відповіді з назвою та значенням
- Void addIntHeader(ім’я рядка,значення int) – додає заголовок відповіді з назвою та цілим значенням
- Промивання пустотBuffer() - примусово виводить вміст у буфер на клієнт.
- Void reset() – очищає дані в буфері.
- Скидання пустотBuffer - очищає буфер вмісту у відповіді без очищення кодів стану.
- Void sendError(intsc,Stringmsg) – надсилає відповідь про помилку клієнту, використовуючи код стану.
- Void sendRedirect (розташування рядка) – надсилає клієнту відповідь тимчасового перенаправлення.
- Порожній набірBufferРозмір (int size) – встановлює розмір буфера тіла
- Void setCharacterEncoding (рядковий набір символів) – встановлює кодування символів
- Void setContentType (тип рядка) – встановлює тип вмісту відповіді
- 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 встановлено як другий параметр
Коли ви виконуєте наведений вище код, ви отримуєте такий результат:
вихід:
- Тут ми отримуємо вихідні дані, оскільки це з об’єкта writer з 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 не підтримується
Методи коду стану HTTP в JSP
Деякі з методів коду стану в JSP перераховані нижче:
- Публічний недійсний setStatus(intstatusCode): Він встановлює код статусу, який ми хочемо встановити на цій сторінці JSP. Це дасть нам повідомлення про встановлений код статусу
- Public 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, який було надіслано з коду, а також відображає повідомлення «Сторінку гуру не знайдено», яке видно у вихідних даних.
Підсумки
- У цій статті ми дізналися про запит клієнта та відповідь сервера про те, як запит перехоплюється та як маніпулюють відповідями.
- Дії JSP які використовують конструкції в синтаксисі XML для керування поведінкою механізму сервлетів.
- Коли веб-сторінка запитується, вона надсилає інформацію на веб-сервер у заголовку HTTP.
- Коли запит обробляється, а потім генерується відповідь із веб-сервера. Він складається з рядка стану, заголовків відповіді, порожнього рядка та документа.
- Коли запит обробляється, генерується відповідь. Рядок статусу відповіді складається з версії HTTP, коду стану та відповідного повідомлення.