JSP İstemcisi İsteği

Sunucu uygulaması motorunun davranışını kontrol etmek için XML söz dizimindeki yapıları kullanan JSP eylemleri. İstemci isteği, sunucu yanıtı, HTTP durum kodları gibi çeşitli JSP Eylem öğeleri hakkında daha ayrıntılı bilgi edineceğiz.

JSP İstemcisi İsteği

  • Web sayfası istendiğinde HTTP başlığındaki web sunucusuna bilgi gönderir.
  • Bu bilgiyi HTTPServletRequest nesnesini kullanarak kullanabiliriz.
  • Tarayıcı tarafından gönderilen bilgiler HTTP isteğinin istek başlığında saklanır.
  • İstek nesnesine bilgi göndermek için farklı başlıklar kullanıyoruz.

JSP'deki başlıklar

JSP'deki farklı başlıklar aşağıda açıklanmıştır:

üstbilgi Açıklama Örnek E-posta
Kabul et Tarayıcının veya diğer istemcilerin işleyebileceği MIME türlerini belirtir Resim/png veya resim/jpeg
Kabul-karakter seti Bilgileri görüntülemek için tarayıcının kullandığı karakter setini kullanır. ISO-8859-1
Kabul Et- Kodlama Tarayıcı tarafından işlenen kodlamanın türünü belirtir Gzip yapın veya sıkıştırın
Kabul-dil İstemcilerin belirlediği dili belirtir Tr,tr_us
Yetki Parola korumalı web sayfalarına erişmeye çalışırken istemciler tarafından kullanılan başlık  
Bağlantısı İstemcinin kalıcı HTTP bağlantılarını idare edip edemeyeceğini gösterir (tarayıcı birden fazla dosyayı alabilir) Hayatta kal
İçerik Uzunluğu Gönderi istekleri için geçerlidir. Bayt cinsinden gönderi verilerinin boyutunu verir  
kurabiye Çerezleri sunucuya döndürür (daha önce tarayıcıya gönderilenler)  
Ev Sahibi Orijinal URL'nin ana bilgisayarını ve bağlantı noktasını belirtir  
O tarihten bu yana değiştirilmişse Değiştirilmiş veya değiştirilmişse yalnızca bir sayfaya ihtiyaç duyduğunu belirtir.  
O zamandan bu yana değiştirilmediyse Yalnızca değiştirilmemiş veya değiştirilmemişse bir sayfa gerektirdiğini belirtir.  
Yönlendirme Yönlendiren URL sayfasının URL'sini belirtir  
Kullanıcı aracısı Tarayıcıyı veya istemcinin istekte bulunduğunu tanımlar  

JSP'de HTTP Başlık Yöntemleri

JSP sayfasında HTTP başlığını okumak için aşağıdaki yöntemler kullanılır:

  1. Çerez[] getCookies() – istemcinin gönderdiği çerez nesnelerini içeren bir dizi döndürür
  2. Numaralandırma getAttributeNames() – istek için öznitelik adlarının numaralandırılmasını içerir
  3. Numaralandırma getHeaderNames() – başlık adlarının numaralandırılmasını içerir.
  4. Numaralandırma getParameterNames() – istekte parametre adlarının alınmasına ilişkin numaralandırmayı içerir.
  5. HttpSessiongetSession() – istekle ilişkili mevcut oturumu döndürür veya oturumu yoksa yeni bir oturum oluşturur.
  6. Yerel ayar getLocale() – istemcinin içeriği kabul edeceği tercih edilen yerel ayarı döndürür. Yanıta atanmıştır. Varsayılan olarak, değer sunucunun varsayılan yerel ayarı olacaktır.
  7. Object getAttribute(Dize adı) – Adlandırılmış özelliğin değerini bir nesne olarak döndürür.
  8. ServletInputStreamgetInputStream() – İsteğin gövdesini ikili veri olarak alır.
  9. Dize getAuthType() – servlet'i korumak için kimlik doğrulama şemasının adını döndürür
  10. Dize getCharacterEncoding() – isteğin gövdesinde kullanılan karakter kodlamasının adını döndürür.
  11. Dize getContentType() – isteğin gövdesinin MIME türünü döndürür.
  12. Dize getContextPath() – istek URI'sinin bir kısmını döndürür URI'nin bağlam yolunu gösterir
  13. Dize getHeader(Dize adı) – istek başlığını bir dize olarak döndürür
  14. Dize getMethod() – GET, POST gibi HTTP yönteminin adını döndürür
  15. String getParameter(Dize adı) – İsteğin parametresini bir dize olarak döndürür.
  16. Dize getPathInfo() – URL ile ilişkili yol bilgisini döndürür
  17. Dize getQueryString() – istek URL'siyle ilişkili sorgu dizesini döndürür
  18. Dize getServletPath() – isteğin JSP'yi çağıran URL kısmını döndürür
  19. String[] getParameterValues(Dize adı) – istek parametresinin sahip olduğu değerleri içeren dize nesnelerinin dizisini döndürür

Örnek:

Aşağıdaki örnekte istek nesnesini kullanarak farklı yöntemler kullanıyoruz

<%@ 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>");
	}

%>

Kodun açıklaması:

Kod Satırı 17: İstek nesnesini kullanarak, söz konusu oturumun oturum nesnesini alıyoruz ve o oturumun nesne değerini alıyoruz.

Kod Satırı 19: İstek nesnesini kullanarak, söz konusu JSP için söz konusu oturumun yerel ayarını (i.een_US yerel ayarını) alıyoruz.

Kod Satırı 21: İstek nesnesini kullanarak o JSP için yol bilgisini alıyoruz. Bu durumda, belirtilen URL'nin yolu olmadığından null olur.

Kod Satırı 23: İstek nesnesini kullanarak içerik yolunu, yani kök yolunu alıyoruz.

Kod Satırı 25: İstek nesnesini kullanarak sunucu adını alıyoruz.

Kod Satırı 27: İstek nesnesini kullanarak sunucu portunu alıyoruz.

Kod Satırı 29-35: İstek nesnesini kullanarak numaralandırma olarak çıkan başlık adlarını alıyoruz ve dolayısıyla başlık adlarındaki tüm başlık değerlerini alıyoruz.

Bunda, tüm başlık değerlerini bir kurabiye, ana bilgisayar, bağlantı, dili kabul et, kodlamayı kabul et.

Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:

JSP İstemcisi İsteği

Çıktı:

Oturum adı, yerel ayar adı, yol adı, sunucu adı, bağlantı noktası adı, ana bilgisayar, bağlam yolu ve bunların tüm başlık değerleri gibi bir dizi değer alıyoruz. JSP.

JSP Sunucu Yanıtı

  • Bir istek işlendiğinde ve ardından web sunucusundan yanıt üretildiğinde. Bir durum satırı, yanıt başlıkları, boş bir satır ve belgeden oluşur.
  • Bir yanıt nesnesi olan HTTPServletResponseclass nesnesidir.
  • Durum satırı HTML'nin bir sürümüdür.

JSP'deki Yanıt Başlıkları

JSP'deki yanıt başlıkları aşağıda belirtilmiştir:

üstbilgi Açıklama
izin vermek Sunucunun istediği GET, POST gibi istek yöntemlerini belirtir.
Önbellek kontrolü Yanıt belgesi önbelleğe alınabilir. Herkese açık, özel olabilir ve önbelleksiz olabilir. Önbellek yok, belgenin önbelleğe alınmaması gerektiğini belirtir
Bağlantısı Tarayıcının kayıtlıHTTPConnections'ı kullanıp kullanmayacağını belirtir. Kapatma değeri, tarayıcının HTTPConnections'da kalıcı bağlantı kullanmaması gerektiğini belirtir ve "canlı tutma", kalıcı bağlantıların kullanılması anlamına gelir
İçerik düzenlemesi Kullanıcıya yanıtın diske kaydedilip kaydedilmeyeceğini sormak için
İçerik kodlama Sayfanın iletim sırasında kodlanması gerekiyor
İçerik Uzunluğu Yanıttaki bayt sayısı
İçerik türü MIME yanıtının türünü belirtir
Bitiş tarihi İçeriğin ne zamana kadar güncelliğini yitirmiş sayılacağını ve önbelleğe alınmaması gerektiğini belirtir
Son değiştirilme Belgenin en son ne zaman değiştirildiğini gösterir
Konum Durum kodu 300 olan tüm yanıtlara durum kodu olarak dahil edilmelidir.
Yenile Güncellenen sayfanın nasıl bulunacağını belirtir.
Sonra yeniden dene Müşteriye isteği ne kadar sürede tekrarlayabileceğini bildirmek için 503 yanıtıyla birlikte kullanılabilir.
çerez Sayfayla ilişkili çerezi belirtir

JSP'de HTTP Yanıt Başlığı Yöntemleri

JSP'de yanıt nesnesini kullanan yöntemler şunlardır:

  1. String encodeRedirectURL(Dize URL'si) – URL'yi yönlendirmeURL yönteminde kodlar.
  2. Dize encodeURL(Dize URL'si) – oturum kimliğini ekleyerek URL'yi kodlar.
  3. Boolean includeHeader(Dize adı) – JSP'de bir başlık içerip içermediği.
  4. Boolean isCommited() – Yanıtın taahhüt edilip edilmediği.
  5. Void addCookie(Çerez çerezi) – yanıta çerez ekler
  6. Void addDateHeader(Dize adı, Dize değeri) – yanıt başlığı tarih adını ve değerini ekler
  7. Void addHeader(Dize adı, Dize değeri) – ad ve değer içeren yanıt başlığını ekler
  8. Void addIntHeader(Dize adı, int değeri) – ad ve tamsayı değerini içeren yanıt başlığını ekler
  9. Geçersiz yıkamaBuffer() – tampondaki içeriği istemciye çıktı olarak zorlar.
  10. Geçersiz sıfırlama() – tampondaki verileri temizler.
  11. Sıfırlamayı geçersiz kılBuffer - durum kodlarını temizlemeden yanıttaki içerik arabelleğini temizler.
  12. SendError'ı geçersiz kıl(intsc,Stringmsg) – durum kodunu kullanarak istemciye bir hata yanıtı gönderir.
  13. SendRedirect'i geçersiz kıl (Dize konumu) – istemciye geçici bir yönlendirme yanıtı gönderir.
  14. geçersiz kümeBufferBoyut(int boyut) – gövdenin tampon boyutunu ayarlar
  15. Void setCharacterEncoding(Dize karakter kümesi) – karakter kodlamasını ayarlar
  16. Void setContentType(Dize türü) – yanıtın içerik türünü ayarlar
  17. Void setContentLength(intlen) – yanıtın içerik uzunluğunu ayarlar
  18. geçersiz setLocale(Yerel ayar lcl) – yanıtın yerel ayar türünü ayarlar
  19. SetStatus'u geçersiz kıl(intsc) – yanıtın durum kodunu ayarlar

Örnek:

Bu örnekte getLocale,flushbuffer, getWriter, get ContentType, setIntHeader gibi farklı metotları ele alıyoruz.

<%@ 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>

Kodun açıklaması:

Kod Satırı 13: Yanıt nesnesini kullanarak bu JSP oturumunun yerel ayar nesnesini alıyoruz

Kod Satırı 15: Yanıt nesnesini kullanarak, flushbuffer, arabellek içeriğini istemciye zorlamak için kullanılır

Kod Satırı 16: Yanıt nesnesini kullanarak, çıktı akışında çıktı alan yazar nesnesini elde ederiz.

Kod Satırı18: Yanıt nesnesini kullanarak içerik türünü, yani yanıt nesnesinin MIME türünü elde ederiz.

Kod Satırı 21: Yanıt nesnesini kullanarak, ikinci parametre olarak 5 ayarlandığından her 5 saniyede bir otomatik yükleme yapmak için kullanılır.

Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:

JSP Sunucu Yanıtı

Çıktı:

  • Burada çıktıyı getWriter'ın yazar nesnesinden alıyoruz, bu da bize nesneyi veriyor ve çıktı akışında çıktı alabiliyoruz.
  • Yerel ayarı en_us olarak, içerik türünü ise text/html olarak alıyoruz
  • Karakter setini ISO 8859 olarak alıyoruz
  • Bugünün tarihi, geçerli tarih olarak.

JSP HTTP Durum Kodları

  • İstek işlendiğinde yanıt oluşturulur. Yanıt durum satırı HTTP sürümünden, bir durum kodundan ve ilişkili bir mesajdan oluşur.
  • Mesaj doğrudan durum kodu ve HTTP sürümüyle ilişkilendirilir ve sunucu tarafından belirlenir.
  • Varsayılan olarak 200, JSP'de durum kodu olarak ayarlanmıştır, dolayısıyla açıkça ayarlamamıza gerek yoktur.
  • Response.setStatus() yöntemini ayarlayabiliriz

Kodlar aşağıdaki 5 kategoriye ayrılır:

  • 100-199 – Burada müşteri bazı eylemlerle yanıt vermesi gerektiğini belirtir
  • 200-299 – İsteğin başarılı olduğunu gösterir
  • 300-399 – Taşınan dosyalar için kullanılırlar ve genellikle yeni adresi belirten bir konum başlığı içerirler
  • 400-499 – İstemcinin hatasını gösterir
  • 500-599 – Sunucunun hatasını gösterir

Yaygın durum kodlarından bazıları aşağıdadır:

  • 200 – Her şeyin yolunda olduğunu gösterir
  • 301 – Kalıcı olarak taşındı
  • 304 – Son değişiklikten bu yana değiştirilmedi
  • 400 – Kötü istek
  • 404 Bulunamadı
  • 405 – Yöntem bulunamadı
  • 500 - Dahili Sunucu Hatası
  • 503 Hizmet Kullanılamıyor
  • 505 – HTTP sürümü desteklenmiyor

JSP'de HTTP Durum Kodu Yöntemleri

JSP'deki durum kodu yöntemlerinden bazıları aşağıda listelenmiştir:

  1. Genel void setStatus(intstatusCode): Bu JSP Sayfasında ayarlamak istediğimiz durum kodunu ayarlar. Bu bize ayarlanan durum kodunun mesajını verecektir.
  2. Genel void sendRedirect(Dize URL'si): Yeni belgenin URL'sini veren konum başlığıyla birlikte 302 yanıtı oluşturur
  3. Genel void sendError(intcode,Stringmsg): Kısa mesajla birlikte durum kodunu da gönderir ve HTML belgesinin içinde biçimlendirilir.

Örnek:

Bu örnekte hatayı JSP sayfasına açıkça gönderiyoruz.

<%@ 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>

Kodun açıklaması:

Kod Satırı 10: Yanıt nesnesini kullanarak hatayı iki parametreli bir sayfaya gönderiyoruz.

  1. Durum kodu – Yukarıdakilerden herhangi biri olabilir. Bu durumda 404 olarak tanımladık.
  2. Mesaj – Hatayı göstermek istediğimiz herhangi bir özel mesaj olabilir

Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:

JSP HTTP Durum Kodları

Çıktı:

Burada koddan gönderilen 404 hata kodunu alıyoruz ve çıktıda “Guru Sayfası bulunamadı” mesajı da görülüyor.

ÖZET

  • Bu yazımızda istemci isteği ve sunucu yanıtını, isteğin nasıl ele geçirildiğini ve yanıtların nasıl manipüle edildiğini öğrendik.
  • JSP eylemleri servlet motorunun davranışını kontrol etmek için XML sözdizimindeki yapıları kullanan.
  • Web sayfası istendiğinde HTTP başlığındaki web sunucusuna bilgi gönderir.
  • Bir istek işlendiğinde ve ardından web sunucusundan yanıt üretildiğinde. Bir durum satırı, yanıt başlıkları, boş bir satır ve belgeden oluşur.
  • İstek işlendiğinde yanıt oluşturulur. Yanıt durum satırı HTTP sürümünden, bir durum kodundan ve ilişkili bir mesajdan oluşur.