Клієнтський запит 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 використовуються такі методи:

  1. Cookie[] getCookies() – повертає масив, що містить об’єкти cookie, надіслані клієнтом
  2. Перерахування getAttributeNames() – містить перелік назв атрибутів для запиту
  3. Перерахування getHeaderNames() – містить перелік імен заголовка.
  4. Перерахування getParameterNames() – містить перелік імен параметрів отримання в запиті.
  5. HttpSessiongetSession() – повертає поточний сеанс, пов’язаний із запитом, або, якщо сеансу немає, створює новий.
  6. Локаль getLocale() – повертає бажану мову, у якій клієнт прийматиме вміст. Її було призначено відповіді. За замовчуванням значенням буде стандартна мова сервера.
  7. Об’єкт getAttribute(ім’я рядка) – повертає значення іменованого атрибута як об’єкт.
  8. ServletInputStreamgetInputStream() – отримує тіло запиту як двійкові дані.
  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>");
	}

%>

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

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

Рядок коду 19: Використовуючи об’єкт запиту, ми отримуємо локаль цього конкретного сеансу, тобто локаль een_US для цього JSP.

Рядок коду 21: Використовуючи об’єкт запиту, ми отримуємо інформацію про шлях для цього JSP. У цьому випадку він дорівнює нулю, оскільки не вказано шлях для URL-адреси.

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

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

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

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

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

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

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

Вихід:

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

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

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

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

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

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

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

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

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

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

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

вихід:

  • Тут ми отримуємо вихідні дані, оскільки це з об’єкта 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 перераховані нижче:

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

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

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

Коди стану JSP HTTP

вихід:

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

Підсумки

  • У цій статті ми дізналися про запит клієнта та відповідь сервера про те, як запит перехоплюється та як маніпулюють відповідями.
  • Дії JSP які використовують конструкції в синтаксисі XML для керування поведінкою механізму сервлетів.
  • Коли веб-сторінка запитується, вона надсилає інформацію на веб-сервер у заголовку HTTP.
  • Коли запит обробляється, а потім генерується відповідь із веб-сервера. Він складається з рядка стану, заголовків відповіді, порожнього рядка та документа.
  • Коли запит обробляється, генерується відповідь. Рядок статусу відповіді складається з версії HTTP, коду стану та відповідного повідомлення.