2.1 HttpServletRequest sınıfı

Servlet uygulamanızın yapması gereken işlerin çoğu, istekten alınan bilgilere göre yapılır. HttpServletRequestKapsayıcının sunucu uygulamanıza (yöntem serviceveya yöntemlere vb doGet(). doPost()) ileteceği nesne bundan sorumludur.

Bu nesnenin epeyce yöntemi vardır, çünkü yalnızca istek verilerini depolar ve onun aracılığıyla kapsayıcıyla etkileşim kurabilirsiniz.

Yöntemler 2 büyük gruba ayrılabilir:

  • Kullanıcı yetkilendirmesi ile ilgili yöntemler
  • İstek verileriyle çalışma yöntemleri

Kullanıcı yetkilendirme yöntemlerini tablo halinde vereceğim ama bunları analiz etmeyeceğiz. Gerçek şu ki, bir kullanıcıyı yetkilendirmek için çok nadiren kullanılırlar. Tüm popüler çerçeveler, yetkilendirme için kendi çok daha gelişmiş yaklaşımlarını kullanır.

Bunları listelemeliyim ama yine de kimsenin onları kullandığını görmedim.

Yöntem Tanım
1 authenticate(HttpServletResponse) Yanıt kimlik doğrulaması gerçekleştirir
2 changeSessionId() Oturum kimliğini zorla değiştir
3 getAuthType() Kullanılan kimlik doğrulama türünü döndürür: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Kullanıcı girişini döndürür
5 getRequestedSessionId() İstemcinin SessionID'sini döndürür
6 getSession() Bir HttpSession nesnesi döndürür
7 getUserPrincipal() Bir java.security.Principal nesnesi döndürür
8 login(username, password) Kullanıcı girişi gerçekleştirir
9 logout() Kullanıcı oturumunu kapatır

2.2 Talep verileri

İkinci yöntem grubu çok daha ilginç. Talepte ne tür verilerimiz var?

  • http yöntemi
  • URI
  • Seçenekler
  • Başlıklar

Onlarla çalışmak için hangi yöntemlerin mevcut olduğunu görelim:

Yöntem Tanım
1 getMethod() HTTP yöntemini döndürür: GET, POST, DELETE, ...
2 getRequestURI() İstek URI'sini döndürür: http://codegym.cc/my/data
3 getRequestURL() İstek URL'sini döndürür: http://codegym.cc/my/data
4 getQueryString() Sorguyu, yani ?'den sonraki her şeyi döndürür.
5 getParameterMap() Sorgu parametrelerinin bir listesini döndürür
6 getParameter(String name) Adına göre parametrenin değerini döndürür
7 getContentType() MimeType istek gövdesini döndürür
8 getReader() İstek gövdesini metin olarak okumak için okuyucu
9 getInputStream() İstek gövdesini byte[] olarak okumak için InputStream
10 getSession() Bir HttpSession nesnesi döndürür
on bir getCookies() Bir dizi Cookie[] nesnesi döndürür
12 getHeaderNames() Başlıkların bir listesini döndürür, yalnızca adlar
13 getHeader(String name) Başlık değerini ada göre döndürür
14 getServletPath() URL'nin servlete başvuran kısmını döndürür
15 getContextPath() İsteğin içeriğini belirten URI bölümünü döndürür

Ve bu tüm yöntemler bile değil ...

HTTP protokolünü inceledikten ve HttpClient ile nasıl çalışacağımızı öğrendikten sonra, burada her şey aşağı yukarı tanıdık, değil mi?

Metnin ve rengin iletilebileceği bir servlet yazalım ve o metnin belirtilen renkte yazılmış olduğu bir HTML sayfası döndürecektir. Bu fikri nasıl buldun?

Servletimizi yazarak başlayalım:


public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
          //write your code here
    }
}

Şimdi kullanıcı tarafından URI'den geçirilen metin ve rengi almamız gerekiyor:


public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Getting the parameter “text” and “color” from request
        String text= request.getParameter("text");
        String color = request.getParameter("color");
 
    }
}

Son olarak, metni HTML olarak çıkarmanız gerekir. Bunu bir sonraki derste ele alacağız, ancak burada küçük bir ipucu vereceğim:

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Get the "text" and "color" parameters from the request
        String text = request.getParameter("text");
        String color = request.getParameter("color");


        // Print the HTML as a response to the browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out =  response.getWriter();
        try {
            out.println("<html>");
            out.println("<head> <title> ColorTextServlet </title> </head>");
            out.println("<body>");
            out.println("<h1 style="color:"+color+">"+text+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}