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 Descriptйон Пример
приемам Той определя MIME типове, които браузърът или други клиенти могат да обработват Изображение/png или изображение/jpeg
Accept-charset Той използва набора от знаци, използван от браузъра, за да покаже информацията ISO-8859-1
Приемам - Кодиране Той определя вида на кодирането, обработвано от браузъра Gzip или компресиране
Приемане на език Той определя езика, определен от клиентите En, en_us
Упълномощаване Заглавка, използвана от клиенти при опит за достъп до защитени с парола уеб страници
Връзка Показва дали клиентът може да обработва постоянни HTTP връзки (браузърът може да извлича множество файлове) Запази живи
Съдържание-дължина Приложимо за заявки за публикации. Той дава размер на пост данните от байтове
Дребни Сладки и Бисквити Връща бисквитки на сървъра (тези, които преди това са били изпратени на браузъра)
Домакин Указва хоста и порта на оригинала URL
Ако е променено оттогава Показва, че изисква само страница, ако е променена или модифицирана
Ако не е променен оттогава Показва, че изисква страница само ако не е променяна или модифицирана
референт Показва URL препращане на URL страница
Потребителски агент Идентифицира браузър или клиент, който прави заявка

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

Използват се следните методи за четене на HTTP заглавката в JSP страница:

  1. Cookie[] getCookies() – връща масив, съдържащ обекти бисквитки, изпратени от клиента
  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 (име на низ) – връща заглавката на заявката като низ
  14. Низ getMethod() – връща името на HTTP метода като GET, POST
  15. String getParameter (име на низ) – връща параметъра на заявката като низ.
  16. Низ getPathInfo() – връща информацията за пътя, свързана с URL
  17. Низ getQueryString() – връща низа на заявката, който е свързан със заявката URL
  18. Низ getServletPath() – връща частта от URLот заявката, която извиква JSP
  19. 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: Използвайки обекта request, получаваме локализацията на тази конкретна сесия, т.е. 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 Descriptйон
Позволете Той определя методите на заявка като GET, POST, които сървърът изисква
Кеш контрол Документът за отговор може да бъде кеширан. Може да бъде публичен, частен и без кеш. Без кеш указва, че документът не трябва да се кешира
Връзка Той инструктира дали браузърът трябва да използва savedHTTPConnections или не. Стойността Close означава, че браузърът не трябва да използва постоянни в HTTPConnections и „keep-alive“ означава използване на постоянни връзки
Съдържание-разположение Да попита потребителя дали да запише отговора на диск или не
Кодиране на съдържанието Страницата трябва да бъде кодирана по време на предаване
Съдържание-дължина Брой байтове в отговора
Тип съдържание Той определя MIME типа отговор
Изтича Указва до кога съдържанието трябва да се счита за остаряло и не трябва да се кешира
Последна промяна Показва кога документът е бил последно модифициран
Адрес Той трябва да бъде включен във всички отговори, които имат код на състояние 300 като код на състояние
Обновяване Той указва как да намерите актуализираната страница.
Повторен опит след Може да се използва с отговор 503, за да се каже на клиента колко скоро може да повтори заявката
Комплект-бисквитка Указва бисквитката, свързана със страницата

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

Следват методите в JSP, използващи обект на отговор:

  1. Пренасочване на низовеURL(Низ URL) - кодира URL при пренасочванеURL метод.
  2. Кодиране на низовеURL(Низ URL) - кодира URL чрез включване на идентификатора на сесията.
  3. Булева стойност съдържаHeader(име на низ) – съдържа заглавка в JSP или не.
  4. Boolean isCommited() – отговорът е ангажиран или не.
  5. Невалидно addCookie (бисквитка тип „бисквитка“) – добавя бисквитка към отговора
  6. Void addDateHeader (Име на низ, Стойност на низ) – добавя име на дата и стойност на заглавката на отговора
  7. Void addHeader (име на низ, стойност на низ) – добавя заглавка на отговора с име и стойност
  8. Void addIntHeader (Име на низ, int стойност) – добавя заглавка на отговора с име и цяло число
  9. Празно промиванеBuffer() – принуждава съдържанието в буфера към изхода към клиента.
  10. Void reset() – изчиства данните в буфера.
  11. Нулиране на празнотаBuffer - изчиства буфера на съдържанието в отговора, без да изчиства кодовете за състояние.
  12. Невалидна грешка при изпращане(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, 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: Използвайки обект за отговор, 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. Публичен void setStatus(int статусCode): Той задава кода на състоянието, който искаме да зададем в тази JSP страница. Това ще ни даде съобщението за кода на състоянието, който е зададен
  2. Публично невалидно изпращанеРедирект(Низ URL): Генерира отговор 302 заедно със заглавката за местоположение, която дава URL на новия документ
  3. Публична грешка в изпращане (int код, String съобщение): Той изпраща кода на състоянието заедно с краткото съобщение и се форматира в 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 скриптлети, които четат параметри и заглавки на заявки, задават заглавки на отговори и изпращат кодове за състояние от описание на разбираем език, които разработчиците след това проверяват за коректност и сигурност.

Обобщете тази публикация с: