JSP клиентска заявка
⚡ Умно обобщение
JSP клиентските заявки и отговорите на сървъра използват JSP елементи за действие, за да контролират сървлет енджин-а. Браузърът изпраща информация чрез HTTP заглавки, сървърът връща ред за състоянието и заглавки, а HTTP кодовете за състояние докладват резултата от всяка заявка.

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 страница:
- Cookie[] getCookies() – връща масив, съдържащ обекти бисквитки, изпратени от клиента
- Изброяване 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: Използвайки обекта request, получаваме локализацията на тази конкретна сесия, т.е. en_US локализация за този JSP.
Code Ред 21: Използвайки обекта request, получаваме информация за пътя за този JSP. В този случай тя е null, тъй като няма път за URL споменати.
Code Ред 23: Използвайки обект на заявка, получаваме контекстен път, т.е. коренен път
Code Ред 25: Използвайки обект на заявка, получаваме името на сървъра.
Code Ред 27: Използвайки обект на заявка, получаваме порт на сървъра.
Code Ред 29-35: Използвайки обект на заявка, получаваме имена на заглавки, които излизат като изброяване, и следователно получаваме всички стойности на заглавките в имената на заглавките.
В това получаваме всички стойности на заглавката като a Дребни Сладки и Бисквити, хост, връзка, приемане на език, приемане на кодиране.
Когато изпълните горния код, получавате следния изход:
Изход:
Получаваме поредица от стойности като име на сесия, име на локал, име на път, име на сървър, име на порт, хост, контекстен път и всички стойности на заглавката на това JSP.
JSP отговор на сървъра
- Когато се обработва заявка и след това се генерира отговор от уеб сървъра. Състои се от ред на състоянието, заглавки на отговора, празен ред и документ.
- Това е обектът на класа HTTPServletResponse, който е обект за отговор.
- Редът на състоянието е версия на HTML.
Заглавки на отговор в JSP
Заглавките на отговорите в JSP са споменати по-долу:
| Header | Descriptйон |
|---|---|
| Позволете | Той определя методите на заявка като GET, POST, които сървърът изисква |
| Кеш контрол | Документът за отговор може да бъде кеширан. Може да бъде публичен, частен и без кеш. Без кеш указва, че документът не трябва да се кешира |
| Връзка | Той инструктира дали браузърът трябва да използва savedHTTPConnections или не. Стойността Close означава, че браузърът не трябва да използва постоянни в HTTPConnections и „keep-alive“ означава използване на постоянни връзки |
| Съдържание-разположение | Да попита потребителя дали да запише отговора на диск или не |
| Кодиране на съдържанието | Страницата трябва да бъде кодирана по време на предаване |
| Съдържание-дължина | Брой байтове в отговора |
| Тип съдържание | Той определя MIME типа отговор |
| Изтича | Указва до кога съдържанието трябва да се счита за остаряло и не трябва да се кешира |
| Последна промяна | Показва кога документът е бил последно модифициран |
| Адрес | Той трябва да бъде включен във всички отговори, които имат код на състояние 300 като код на състояние |
| Обновяване | Той указва как да намерите актуализираната страница. |
| Повторен опит след | Може да се използва с отговор 503, за да се каже на клиента колко скоро може да повтори заявката |
| Комплект-бисквитка | Указва бисквитката, свързана със страницата |
Методи за заглавка на HTTP отговор в JSP
Следват методите в JSP, използващи обект на отговор:
- Пренасочване на низовеURL(Низ URL) - кодира URL при пренасочванеURL метод.
- Кодиране на низовеURL(Низ URL) - кодира URL чрез включване на идентификатора на сесията.
- Булева стойност съдържаHeader(име на низ) – съдържа заглавка в JSP или не.
- Boolean isCommited() – отговорът е ангажиран или не.
- Невалидно addCookie (бисквитка тип „бисквитка“) – добавя бисквитка към отговора
- Void addDateHeader (Име на низ, Стойност на низ) – добавя име на дата и стойност на заглавката на отговора
- Void addHeader (име на низ, стойност на низ) – добавя заглавка на отговора с име и стойност
- Void addIntHeader (Име на низ, int стойност) – добавя заглавка на отговора с име и цяло число
- Празно промиванеBuffer() – принуждава съдържанието в буфера към изхода към клиента.
- Void reset() – изчиства данните в буфера.
- Нулиране на празнотаBuffer - изчиства буфера на съдържанието в отговора, без да изчиства кодовете за състояние.
- Невалидна грешка при изпращане(int sc,String msg) – изпраща отговор за грешка на клиента, използвайки код на състоянието.
- Void sendRedirect (Местоположение на низ) – изпраща временен отговор за пренасочване към клиента.
- Празен комплектBufferРазмер (int size) – задава размера на буфера на тялото
- Void setCharacterEncoding (набор от символи на низ) – задава кодиране на знаци
- Void setContentType (тип низ) – задава вида на съдържанието на отговора
- Невалиден setContentLength(int len) – задава дължината на съдържанието на отговора
- Void setLocale(Locale lcl) – задава локалния тип на отговора
- Невалиден 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 е зададено като втори параметър
Когато изпълните горния код, получавате следния изход:
Изход:
- Тук получаваме изхода, тъй като това е от обекта 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 са изброени по-долу:
- Публичен void setStatus(int статусCode): Той задава кода на състоянието, който искаме да зададем в тази JSP страница. Това ще ни даде съобщението за кода на състоянието, който е зададен
- Публично невалидно изпращанеРедирект(Низ URL): Генерира отговор 302 заедно със заглавката за местоположение, която дава URL на новия документ
- Публична грешка в изпращане (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: Използвайки обект за отговор, ние изпращаме грешката до страница с два параметъра.
- Код на състоянието – може да бъде всеки от горните. В този случай сме го описали като 404
- Съобщение – Може да бъде всяко конкретно съобщение, което искаме да показва грешката
Ако изпълните горния код, ще получите следния резултат:
Изход:
Тук получаваме код за грешка 404, който е изпратен от кода и също така показва „Guru В изхода се вижда съобщение „Страницата не е намерена“.



