JSP действия, които използват конструкции в XML синтаксис, за да контролират поведението на сервлетния механизъм. Ще научим по-подробно за различни елементи на JSP Action като заявка на клиент, отговор на сървъра, кодове на състоянието на HTTP.
В този урок ще научите -
- Заявка за клиент на JSP
- Отговор на JSP сървър
- JSP HTTP кодове на състоянието
Заявка за клиент на JSP
- Когато се изиска уеб страницата, тя изпраща информация до уеб сървъра в HTTP заглавката.
- Можем да използваме тази информация, като използваме обект HTTPServletRequest.
- Информацията, изпратена от браузъра, се съхранява в заглавката на заявката на HTTP заявката.
- Използваме различни заглавки за изпращане на информация до обекта на заявката.
По-долу са описани различни заглавки:
Хедър | Описание | Пример |
---|---|---|
Приемете | Той определя типовете MIME, с които браузърът или други клиенти могат да се справят | Изображение / png или изображение / jpeg.webp |
Приемам-charset | Той използва набора от символи, използван от браузъра, за да покаже информацията | ISO-8859-1 |
Приемам- Кодиране | Той определя типа кодиране, обработвано от браузъра | Gzip или компресиране |
Приемете език | Той определя езика, посочен от клиентите | En, en_us |
Разрешение | Заглавие, използвано от клиенти при опит за достъп до защитени с парола уеб страници | |
Връзка | Показва дали клиентът може да се справи с постоянни HTTP връзки (браузърът може да извлича множество файлове) | Запази живи |
Дължина на съдържанието | Приложимо за заявки за публикуване. Той дава размер на байтовите данни | |
Бисквитка | Връща бисквитка към сървъра (тези, които преди това са били изпратени до браузъра) | |
Водещ | Указва хоста и порта на оригиналния URL адрес | |
Ако е променен от | Това показва, че изисква само страница, ако е била променена или модифицирана | |
Ако не е модифициран от | Това показва, че изисква страница само ако не е била променяна или модифицирана | |
Препращащ | Показва URL на препращащата URL страница | |
Потребителски агент | Идентифицира браузър или клиент, отправящ заявка |
Следните методи се използват за четене на HTTP заглавката в JSP страница:
- Cookie [] getCookies () - връща масив, съдържащ обекти на бисквитки, изпратени от клиента
- Enumeration getAttributeNames () - съдържа изброяване на имена на атрибути за заявка
- Enumeration getHeaderNames () - съдържа изброяване на имена на хедър.
- Enumeration getParameterNames () - съдържа изброяване на получаване на имена на параметри в заявката.
- HttpSessiongetSession () - връща текущата сесия, свързана със заявката, или ако няма сесия, ще създаде нова.
- Locale getLocale () - връща предпочитания локал, в който клиентът ще приеме съдържание. Той е присвоен на отговора. По подразбиране стойността ще бъде локал по подразбиране на сървъра.
- Object getAttribute (String name) - връща стойността на наименования атрибут като обект.
- ServletInputStreamgetInputStream () - извлича тялото на заявката като двоични данни.
- String getAuthType () - връща името на схемата за удостоверяване за защита на сървлета
- String getCharacterEncoding () - връща името на кодирането на символи, използвано в тялото на заявката.
- String getContentType () - връща MIME типа на тялото на заявката.
- String getContextPath () - връща частта на URI на заявката показва контекстния път на URI
- String getHeader (Име на низ) - връща заглавката на заявката като низ
- String getMethod () - връща името на HTTP метода като GET, POST
- String getParameter (име на низ) - връща параметъра на заявката като низ.
- String getPathInfo () - връща информацията за пътя, свързана с URL адреса
- String getQueryString () - връща низа на заявката, който е свързан с URL адреса на заявката
- String 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. *"%>Клиентска заявка Guru JSP Клиентска заявка Guru JSP
<таблична граница = "1"><%HttpSession gurusession = request.getSession ();out.print (" заглавка на гуру заглавка на гуру Стойност (и) ");Locale gurulocale = request.getLocale ();out.print (" Името на сесията е " + gurusession + " td.> ");Път на низ = request.getPathInfo ();out.print (" Името на локала е " + gurulocale + " ");Низ lpath = request.get ();out.print (" Името на пътя е " + path + " ");Низ име на сървър = request.getServerName ();out.print (" Контекстният път е " + lipath + " ");int portname = request.getServerPort ();out.print (" Името на сървъра е " + име на сървъра + " ");Изброяване hnames = request.getHeaderNames ();докато (hnames.hasMoreElements ()) {Низ paramName = (низ) hnames.nextElement ();out.print (" Портът на сървъра е " + име на порт + " ");}%> " + paramName + " ");Низ paramValue = request.getHeader (paramName);out.println ("" + paramValue + "
Обяснение на кода:
Кодов ред 17: Използвайки обект на заявка, получаваме обекта на сесията на конкретната сесия и получаваме стойността на обекта на тази сесия
Кодов ред 19: Използвайки обект за заявка, получаваме локал на тази конкретна сесия i.een_US локал за този JSP.
Кодов ред 21: Използвайки обект на заявка, получаваме информация за пътя за този JSP. В този случай тя е нула, тъй като няма споменат път за URL.
Кодов ред 23: Използвайки обект на заявка, получаваме контекстна пътека, т.е. коренна пътека
Кодов ред 25: Използвайки обект на заявка, получаваме името на сървъра.
Кодов ред 27: Използвайки обект на заявка, получаваме сървърния порт.
Кодов ред 29-35: Използвайки обект на заявка, получаваме имена на заглавки, които излизат като изброяване, и следователно получаваме всички стойности на заглавките в имената на заглавките.
В това получаваме всички стойности на заглавката като бисквитка, хост, връзка, приемаме език, приемаме кодиране.
Когато изпълните горния код, получавате следния изход:
Изход :
Получаваме поредица от стойности като име на сесия, име на локал, име на път, име на сървър, име на порт, хост, контекстен път и всички стойности на заглавката на този JSP.
Отговор на JSP сървър
- Когато заявката се обработва и след това отговорът се генерира от уеб сървъра. Състои се от ред за състояние, заглавки на отговори, празен ред и документ.
- Той е обект на HTTPServletResponseclass, който е обект на отговор.
- Редът на състоянието е версия на HTML.
Заглавията на отговорите са посочени по-долу:
Хедър | Описание |
---|---|
Позволява | Той определя методите за заявка като GET, POST, които сървърът иска |
Контрол на кеша | Документът за отговор може да бъде кеширан. Тя може да бъде публична, частна и без кеш. Никой кеш не посочва, че документът не трябва да се кешира |
Връзка | Той указва дали браузърът трябва да използва запазени HTTPConnections или не. Стойността на затваряне представлява, че браузърът не трябва да използва постоянни в HTTPConnections и "поддържане на живо" означава използване на постоянни връзки |
Съдържание-разположение | За да попитате потребителя дали да запишете отговора на диск или не |
Кодиране на съдържание | Страницата трябва да бъде кодирана по време на предаването |
Дължина на съдържанието | Брой байтове в отговора |
Тип съдържание | Той определя типа MIME отговор |
Изтича | Посочва до кога съдържанието трябва да се счита за остаряло и не трябва да се кешира |
Последно модифициран | Показва кога документът е последно променен |
Местоположение | Той трябва да бъде включен във всички отговори, които имат код на състоянието като код на състоянието 300 |
Обнови | Той посочва как да намерите актуализираната страница. |
Повторен опит | Може да се използва с 503 отговор, за да каже на клиента колко скоро може да повтори заявката |
Set-бисквитка | Посочва бисквитката, свързана със страницата |
Следват методите, използващи обект на отговор:
- String encodeRedirectURL (String URL) - кодира URL адреса в метод redirectURL.
- String encodeURL (String URL) - кодира URL адреса, като включва идентификатор на сесията.
- Boolean containsHeader (Име на низ) - съдържа заглавка в JSP или не.
- Boolean isCommited () - отговорът е бил ангажиран или не.
- Void addCookie (Cookie cookie) - добавя бисквитка към отговора
- Void addDateHeader (Име на низ, стойност на низа) - добавя име и стойност на заглавката на отговора
- Void addHeader (String name, String value) - добавя заглавка на отговор с име и стойност
- Void addIntHeader (Име на низ, стойност int) - добавя заглавка на отговор с име и стойност на цялото число
- Void flushBuffer () - принуждава съдържанието в буфера към изхода към клиента.
- Void reset () - изчиства данните в буфера.
- Void resetBuffer - изчиства буфера на съдържанието в отговора, без да изчиства кодовете на състоянието.
- Void sendError (intsc, Stringmsg) - изпраща отговор на грешка до клиента, използвайки код на състоянието.
- Void sendRedirect (String location) - изпраща временен отговор за пренасочване към клиента.
- Void setBufferSize (int size) - задава размера на буфера на тялото
- Void setCharacterEncoding (String charset) - задава кодиране на знаци
- Void setContentType (String type) - задава типа съдържание на отговора
- 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. *"%>Отговор на действията на гуру Отговор на гуру
<%Локал lcl = response.getLocale ();out.println ("Езикът е: + lcl + "\ n");response.flushBuffer ();PrintWriter изход = response.getWriter ();output.println ("Това е от обект на писател");Тип на низа = response.getContentType ();out.println ("Типът съдържание: + тип + "\ n");// Задаване на опресняване, време за автоматично зареждане като 5 секундиresponse.setIntHeader ("Опресняване", 5);// Вземете текущото времеДата dt = нова дата ();out.println ("Днешната дата е: + dt.toString () + "\ n");%>
Обяснение на кода:
Код ред 13: Използвайки обект за отговор, получаваме обект на локал на тази JSP сесия
Кодов ред 15: Използвайки обект за отговор, flushbuffer се използва, за да принуди съдържанието на буфера в клиента
Кодов ред 16: Използвайки обект за отговор, получаваме обект на запис, който получава изход в изходния поток
Кодова линия 18: Използвайки обект на отговор, получаваме тип съдържание, т.е. MIME тип на обект на отговор
Кодов ред 21: Използвайки обект за отговор, той се използва за автоматично зареждане на всеки 5 секунди, тъй като 5 е зададен като втори параметър
Когато изпълните горния код, получавате следния изход:
Изход:
- Тук получаваме изхода, тъй като това е от обект на писател от 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 версия не се поддържа
Някои от методите му са изброени по-долу:
- Публичен void setStatus (intstatusCode)
Той задава кода на състоянието, който и да искаме да зададем в тази JSP страница. Това ще ни даде съобщението за код на състоянието, който е зададен
- Public void sendRedirect (URL низ)
Той генерира 302 отговор, заедно със заглавката на местоположението, давайки URL на новия документ
- Публична void sendError (intcode, Stringmsg)
Той изпраща кода на състоянието заедно с краткото съобщение и се форматира в HTML документ.
Пример:
В този пример изпращаме изрично грешка към JSP страницата.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>Код на състоянието на гуру <% response.sendError (404, "Страницата на гуру не е намерена"); %>
Обяснение на кода:
Кодов ред 10: Използвайки обект за отговор, ние изпращаме грешката на страница с два параметъра.
- Код на състоянието - може да е всеки от горните. В този случай сме описали като 404
- Съобщение - Може да бъде всяко конкретно съобщение, което искаме да покажем грешката
Ако изпълните горния код, ще получите следния изход:
Изход:
Тук получаваме код за грешка като 404, който е изпратен от кода и също така показва съобщението „Страницата на гуру не е намерена“, видяна в изхода.
Резюме:
- В тази статия научихме за заявката на клиента и отговора на сървъра за това как заявката се прихваща и как се манипулират отговорите.
- Също така научихме за HTTP кодовете на състоянието, за да показваме кодове за грешки или кодове за успех за определен файл.