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:
- Çerez[] getCookies() – istemcinin gönderdiği çerez nesnelerini içeren bir dizi döndürür
- Numaralandırma getAttributeNames() – istek için öznitelik adlarının numaralandırılmasını içerir
- Numaralandırma getHeaderNames() – başlık adlarının numaralandırılmasını içerir.
- Numaralandırma getParameterNames() – istekte parametre adlarının alınmasına ilişkin numaralandırmayı içerir.
- HttpSessiongetSession() – istekle ilişkili mevcut oturumu döndürür veya oturumu yoksa yeni bir oturum oluşturur.
- 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.
- Object getAttribute(Dize adı) – Adlandırılmış özelliğin değerini bir nesne olarak döndürür.
- ServletInputStreamgetInputStream() – İsteğin gövdesini ikili veri olarak alır.
- Dize getAuthType() – servlet'i korumak için kimlik doğrulama şemasının adını döndürür
- Dize getCharacterEncoding() – isteğin gövdesinde kullanılan karakter kodlamasının adını döndürür.
- Dize getContentType() – isteğin gövdesinin MIME türünü döndürür.
- Dize getContextPath() – istek URI'sinin bir kısmını döndürür URI'nin bağlam yolunu gösterir
- Dize getHeader(Dize adı) – istek başlığını bir dize olarak döndürür
- Dize getMethod() – GET, POST gibi HTTP yönteminin adını döndürür
- String getParameter(Dize adı) – İsteğin parametresini bir dize olarak döndürür.
- Dize getPathInfo() – URL ile ilişkili yol bilgisini döndürür
- Dize getQueryString() – istek URL'siyle ilişkili sorgu dizesini döndürür
- Dize getServletPath() – isteğin JSP'yi çağıran URL kısmını döndürür
- 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:
Çı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:
- String encodeRedirectURL(Dize URL'si) – URL'yi yönlendirmeURL yönteminde kodlar.
- Dize encodeURL(Dize URL'si) – oturum kimliğini ekleyerek URL'yi kodlar.
- Boolean includeHeader(Dize adı) – JSP'de bir başlık içerip içermediği.
- Boolean isCommited() – Yanıtın taahhüt edilip edilmediği.
- Void addCookie(Çerez çerezi) – yanıta çerez ekler
- Void addDateHeader(Dize adı, Dize değeri) – yanıt başlığı tarih adını ve değerini ekler
- Void addHeader(Dize adı, Dize değeri) – ad ve değer içeren yanıt başlığını ekler
- Void addIntHeader(Dize adı, int değeri) – ad ve tamsayı değerini içeren yanıt başlığını ekler
- Geçersiz yıkamaBuffer() – tampondaki içeriği istemciye çıktı olarak zorlar.
- Geçersiz sıfırlama() – tampondaki verileri temizler.
- Sıfırlamayı geçersiz kılBuffer - durum kodlarını temizlemeden yanıttaki içerik arabelleğini temizler.
- SendError'ı geçersiz kıl(intsc,Stringmsg) – durum kodunu kullanarak istemciye bir hata yanıtı gönderir.
- SendRedirect'i geçersiz kıl (Dize konumu) – istemciye geçici bir yönlendirme yanıtı gönderir.
- geçersiz kümeBufferBoyut(int boyut) – gövdenin tampon boyutunu ayarlar
- Void setCharacterEncoding(Dize karakter kümesi) – karakter kodlamasını ayarlar
- Void setContentType(Dize türü) – yanıtın içerik türünü ayarlar
- Void setContentLength(intlen) – yanıtın içerik uzunluğunu ayarlar
- geçersiz setLocale(Yerel ayar lcl) – yanıtın yerel ayar türünü ayarlar
- 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:
Çı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:
- Genel void setStatus(intstatusCode): Bu JSP Sayfasında ayarlamak istediğimiz durum kodunu ayarlar. Bu bize ayarlanan durum kodunun mesajını verecektir.
- Genel void sendRedirect(Dize URL'si): Yeni belgenin URL'sini veren konum başlığıyla birlikte 302 yanıtı oluşturur
- 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.
- Durum kodu – Yukarıdakilerden herhangi biri olabilir. Bu durumda 404 olarak tanımladık.
- 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:
Çı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.