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. HttpSessiongetSession() – връща текущата сесия, свързана със заявката, или ако няма сесия, ще създаде нова.
  6. Локал getLocale() – връща предпочитания локал, в който клиентът ще приеме съдържание. Той е присвоен на отговора. По подразбиране стойността ще бъде локалът по подразбиране на сървъра.
  7. Обект getAttribute (име на низ) – връща стойността на именувания атрибут като обект.
  8. ServletInputStreamgetInputStream() – извлича тялото на заявката като двоични данни.
  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>");
	}

%>

Обяснение на кода:

Кодов ред 17: Използвайки обект на заявка, ние получаваме обекта на сесията на тази конкретна сесия и получаваме стойността на обекта на тази сесия

Кодов ред 19: Използвайки обект на заявка, ние получаваме локал на тази конкретна сесия i.een_US локал за този JSP.

Кодов ред 21: Използвайки обект на заявка, ние получаваме информация за пътя за този JSP. В този случай той е нула, тъй като няма споменат път за URL.

Кодов ред 23: Използвайки обект на заявка, получаваме контекстен път, т.е. коренен път

Кодов ред 25: Използвайки обект на заявка, получаваме името на сървъра.

Кодов ред 27: Използвайки обект на заявка, получаваме порт на сървъра.

Кодов ред 29-35: Използвайки обект на заявка, получаваме имена на заглавки, които излизат като изброяване, и следователно получаваме всички стойности на заглавките в имената на заглавките.

В това получаваме всички стойности на заглавката като a Дребни Сладки и Бисквити, хост, връзка, приемане на език, приемане на кодиране.

Когато изпълните горния код, получавате следния изход:

JSP клиентска заявка

Продукция:

Получаваме поредица от стойности като име на сесия, име на локал, име на път, име на сървър, име на порт, хост, контекстен път и всички стойности на заглавката на това JSP.

JSP отговор на сървъра

  • Когато се обработва заявка и след това се генерира отговор от уеб сървъра. Състои се от ред на състоянието, заглавки на отговора, празен ред и документ.
  • Това е обект на HTTPServletResponseclass, който е обект на отговор.
  • Редът на състоянието е версия на HTML.

Заглавки на отговор в JSP

Заглавките на отговорите в JSP са споменати по-долу:

Header Descriptйон
Позволете Той определя методите на заявка като GET, POST, които сървърът изисква
Кеш контрол Документът за отговор може да бъде кеширан. Може да бъде публичен, частен и без кеш. Без кеш указва, че документът не трябва да се кешира
Връзка Той инструктира дали браузърът трябва да използва savedHTTPConnections или не. Стойността Close означава, че браузърът не трябва да използва постоянни в HTTPConnections и „keep-alive“ означава използване на постоянни връзки
Съдържание-разположение Да попита потребителя дали да запише отговора на диск или не
Кодиране на съдържанието Страницата трябва да бъде кодирана по време на предаване
Съдържание-дължина Брой байтове в отговора
Тип съдържание Той определя MIME типа отговор
Изтича Указва до кога съдържанието трябва да се счита за остаряло и не трябва да се кешира
Последна промяна Показва кога документът е бил последно модифициран
Адрес Той трябва да бъде включен във всички отговори, които имат код на състояние 300 като код на състояние
Обновяване Той указва как да намерите актуализираната страница.
Повторен опит след Може да се използва с отговор 503, за да се каже на клиента колко скоро може да повтори заявката
Комплект-бисквитка Указва бисквитката, свързана със страницата

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

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

  1. String encodeRedirectURL(String URL) – кодира URL адреса в метода redirectURL.
  2. String encodeURL(String URL) – кодира URL адреса, като включва идентификатор на сесия.
  3. Булева стойност съдържаHeader(име на низ) – съдържа заглавка в JSP или не.
  4. Boolean isCommited() – отговорът е ангажиран или не.
  5. Void addCookie(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 object от 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, който е изпратен от кода и също така показва съобщението „Guru Page not found“, което се вижда в изхода.

Oбобщение

  • В тази статия научихме за заявката на клиента и отговора на сървъра за това как се прихваща заявката и как се манипулират отговорите.
  • JSP действия които използват конструкции в XML синтаксиса, за да контролират поведението на сървлет машината.
  • Когато се поиска уеб страницата, тя изпраща информация до уеб сървъра в HTTP заглавката.
  • Когато се обработва заявка и след това се генерира отговор от уеб сървъра. Състои се от ред на състоянието, заглавки на отговора, празен ред и документ.
  • Когато заявката бъде обработена, се генерира отговор. Редът за състояние на отговора се състои от HTTP версия, код на състояние и свързано съобщение.