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