Servletler - İstemci HTTP İsteği
Bir tarayıcı bir web sayfası istediğinde, web sunucusuna, bu bilgi HTTP isteğinin başlığının bir parçası olarak seyahat ettiği için doğrudan okunamayan birçok bilgiyi gönderir. Bununla ilgili daha fazla bilgi için HTTP Protokolünü kontrol edebilirsiniz .
Aşağıda, tarayıcı tarafından gelen ve web programlamada çok sık kullanacağınız önemli başlık bilgileri verilmiştir -
Sr.No. | Üstbilgi ve Açıklama |
---|---|
1 | Accept Bu başlık, tarayıcının veya diğer istemcilerin işleyebileceği MIME türlerini belirtir. Değerleriimage/png veya image/jpeg en yaygın iki olasılıktır. |
2 | Accept-Charset Bu başlık, tarayıcının bilgileri görüntülemek için kullanabileceği karakter kümelerini belirtir. Örneğin ISO-8859-1. |
3 | Accept-Encoding Bu başlık, tarayıcının nasıl işleyeceğini bildiği kodlama türlerini belirtir. Değerlerigzip veya compress en yaygın iki olasılıktır. |
4 | Accept-Language Bu başlık, sunucu uygulamasının birden fazla dilde sonuç üretebilmesi durumunda istemcinin tercih ettiği dilleri belirtir. Örneğin en, en-us, ru, vb. |
5 | Authorization Bu başlık, istemciler tarafından parola korumalı Web sayfalarına erişirken kendilerini tanıtmak için kullanılır. |
6 | Connection Bu başlık, istemcinin kalıcı HTTP bağlantılarını işleyip işlemediğini gösterir. Kalıcı bağlantılar, istemcinin veya diğer tarayıcının tek bir istekle birden çok dosyayı almasına izin verir. DeğeriKeep-Alive kalıcı bağlantıların kullanılması gerektiği anlamına gelir. |
7 | Content-Length Bu başlık yalnızca POST istekleri için geçerlidir ve POST verilerinin boyutunu bayt cinsinden verir. |
8 | Cookie Bu başlık, çerezleri daha önce tarayıcıya gönderen sunuculara döndürür. |
9 | Host Bu başlık, orijinal URL'de verildiği şekliyle ana bilgisayarı ve bağlantı noktasını belirtir. |
10 | If-Modified-Since Bu başlık, müşterinin sayfayı yalnızca belirtilen tarihten sonra değiştirilmişse istediğini belirtir. Sunucu bir kod gönderir, bu da şu anlama gelir:Not Modified daha yeni bir sonuç yoksa başlık. |
11 | If-Unmodified-Since Bu üstbilgi, If-Modified-Since'in tersidir; yalnızca belgenin belirtilen tarihten daha eski olması durumunda işlemin başarılı olması gerektiğini belirtir. |
12 | Referer Bu başlık, yönlendiren Web sayfasının URL'sini gösterir. Örneğin, Web sayfası 1'deyseniz ve Web sayfası 2'ye giden bir bağlantıyı tıklarsanız, tarayıcı Web sayfası 2'yi istediğinde Web sayfası 1'in URL'si Yönlendiren başlığına eklenir. |
13 | User-Agent Bu başlık, istekte bulunan tarayıcıyı veya diğer istemciyi tanımlar ve farklı içeriği farklı tarayıcı türlerine döndürmek için kullanılabilir. |
HTTP Üstbilgisini okuma yöntemleri
Sunucu uygulaması programınızda HTTP başlığını okumak için kullanılabilecek aşağıdaki yöntemler vardır. Bu yöntemler HttpServletRequest nesnesiyle kullanılabilir
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | Cookie[] getCookies() İstemcinin bu istekle gönderdiği tüm Çerez nesnelerini içeren bir dizi döndürür. |
2 | Enumeration getAttributeNames() Bu istek için kullanılabilen özniteliklerin adlarını içeren bir Numaralandırma döndürür. |
3 | Enumeration getHeaderNames() Bu isteğin içerdiği tüm başlık adlarının bir listesini döndürür. |
4 | Enumeration getParameterNames() Bu istekte bulunan parametrelerin adlarını içeren String nesnelerinin bir Numaralandırmasını döndürür |
5 | HttpSession getSession() Bu istekle ilişkili geçerli oturumu döndürür veya isteğin bir oturumu yoksa bir oturum oluşturur. |
6 | HttpSession getSession(boolean create) Bu istekle ilişkili geçerli HttpSession'ı döndürür veya geçerli oturum yoksa ve create değeri true ise, yeni bir oturum döndürür. |
7 | Locale getLocale() Accept-Language başlığına bağlı olarak istemcinin içeriği kabul edeceği tercih edilen Yerel Ayarı döndürür. |
8 | Object getAttribute(String name) Adlandırılmış özniteliğin değerini bir Nesne olarak döndürür veya verilen adın bir özniteliği yoksa null döndürür. |
9 | ServletInputStream getInputStream() ServletInputStream kullanarak isteğin gövdesini ikili veri olarak alır. |
10 | String getAuthType() Sunucu uygulamasını korumak için kullanılan kimlik doğrulama şemasının adını, örneğin "BASIC" veya "SSL" veya JSP korumalı değilse null döndürür. |
11 | String getCharacterEncoding() Bu isteğin gövdesinde kullanılan karakter kodlamasının adını döndürür. |
12 | String getContentType() İsteğin gövdesinin MIME türünü veya tür bilinmiyorsa null döndürür. |
13 | String getContextPath() İstek URI'sinin, isteğin içeriğini gösteren kısmını döndürür. |
14 | String getHeader(String name) Belirtilen istek başlığının değerini bir String olarak döndürür. |
15 | String getMethod() Bu isteğin yapıldığı HTTP yönteminin adını döndürür, örneğin GET, POST veya PUT. |
16 | String getParameter(String name) Bir istek parametresinin değerini Dize olarak veya parametre yoksa null olarak döndürür. |
17 | String getPathInfo() İstemcinin bu istekte bulunduğunda gönderdiği URL ile ilişkili tüm ekstra yol bilgilerini döndürür |
18 | String getProtocol() İsteğin protokol adını ve sürümünü döndürür. |
19 | String getQueryString() Yoldan sonra istek URL'sinde bulunan sorgu dizesini döndürür. |
20 | String getRemoteAddr() İsteği gönderen istemcinin İnternet Protokolü (IP) adresini döndürür. |
21 | String getRemoteHost() İsteği gönderen istemcinin tam nitelikli adını döndürür. |
22 | String getRemoteUser() Kullanıcı kimliği doğrulanmışsa, bu istekte bulunan kullanıcının oturum açma bilgilerini döndürür veya kullanıcı kimliği doğrulanmamışsa boş değeri döndürür. |
23 | String getRequestURI() Bu isteğin URL'sinin, protokol adından HTTP isteğinin ilk satırındaki sorgu dizesine kadar olan kısmını döndürür. |
24 | String getRequestedSessionId() İstemci tarafından belirtilen oturum kimliğini döndürür. |
25 | String getServletPath() Bu isteğin URL'sinin JSP'yi çağıran kısmını döndürür. |
26 | String[] getParameterValues(String name) Verilen istek parametresinin sahip olduğu tüm değerleri içeren bir String nesneleri dizisi veya parametre yoksa null döndürür. |
27 | boolean isSecure() Bu isteğin HTTPS gibi güvenli bir kanal kullanılarak yapılıp yapılmadığını gösteren bir Boole değeri döndürür. |
28 | int getContentLength() İstek gövdesinin bayt cinsinden uzunluğunu ve giriş akışı tarafından kullanılabilir hale getirilen uzunluğunu veya uzunluk bilinmiyorsa -1 değerini döndürür. |
29 | int getIntHeader(String name) Belirtilen istek başlığının değerini bir int olarak döndürür. |
30 | int getServerPort() Bu isteğin alındığı bağlantı noktası numarasını döndürür. |
HTTP Üstbilgi İsteği Örneği
Kullanan örnek aşağıdadır getHeaderNames()HTTP başlık bilgilerini okumak için HttpServletRequest yöntemi. Bu yöntem, geçerli HTTP isteği ile ilişkili başlık bilgilerini içeren bir Numaralandırma döndürür.
Bir Numaralandırmaya sahip olduktan sonra, ne zaman duracağımızı belirlemek için hasMoreElements () yöntemini ve her bir parametre adını almak için nextElement () yöntemini kullanarak Numaralandırmayı standart şekilde döngüye alabiliriz.
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {
// Method to handle GET method request.
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "HTTP Header Request Example";
String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n"+
"<body bgcolor = \"#f0f0f0\">\n" +
"<h1 align = \"center\">" + title + "</h1>\n" +
"<table width = \"100%\" border = \"1\" align = \"center\">\n" +
"<tr bgcolor = \"#949494\">\n" +
"<th>Header Name</th><th>Header Value(s)</th>\n"+
"</tr>\n"
);
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
out.println("</table>\n</body></html>");
}
// Method to handle POST method request.
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Şimdi yukarıdaki sunucu uygulamasının çağrılması şu sonucu üretecektir -
HTTP Header Request Example
Header Name
Header Value(s)
accept
*/*
accept-language
en-us
user-agent
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encoding
gzip, deflate
host
localhost:8080
connection
Keep-Alive
cache-control
no-cache