Merhabalar arkadaşlar. Bu yazıda bir başka parametre edinme yöntemi olan CookieParam’ı öğreneceğiz.

Bildiğiniz gibi ziyaret ettiğimiz web siteleri ikinci kez siteyi ziyaret ettiğimizde aynı içeriği tutabiliyor ve sunabiliyor olmak için cookilerden faydalanırlar. Web servisler içerisinde de uygulamanız cookie koyup sonradan bu cookiye erişmek zorunda kalabilir. İşte bu durum için CookieParam notasyonu üretilmiş ve parametreye Cookie ismini vererek rahatça kullanıyoruz.

Şimdi öncelikle bir Servlet kodu ile tarayıcımıza cookie ekleme işini yapalım. Tarayıcımız içinde varolan cookileri güvenlik gerekçesi ile kullanamayız ve bizim domainimiz localhost olduğu için localhost’a ait cookiler ile çalışabiliriz.

AddCookie.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package restService;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author ilkaygunel
 */
@WebServlet(name = "AddCookie", urlPatterns = {"/AddCookie"})
public class AddCookie extends HttpServlet {
    public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // Create cookies for first and last names.      
      Cookie firstName = new Cookie("first_name","ilkay");
      Cookie lastName = new Cookie("last_name","günel");

      // Set expiry date after 24 Hrs for both the cookies.
      firstName.setMaxAge(60*60*24); 
      lastName.setMaxAge(60*60*24); 

      // Add both the cookies in the response header.
      response.addCookie( firstName );
      response.addCookie( lastName );

      // Set response content type
      response.setContentType("text/html");

  }
}
//Kaynak:http://www.tutorialspoint.com/servlets/servlets-cookies-handling.htm

Bu kod Servlet bilenler için çok kolay ama bilmeyenler için şöyle söyleyelim, Servlet kütüphanesi içerisinde yer alan Cookie sınıfından iki adet Cookie nesnesi oluşturuluyor, bu cookie’lere setMaxAge ile ne kadar süre yaşayacağı söyleniyor ve döndürülen response’a cookiler’in koyulması ile tarayıcıya ilgili çerezler koyulmuş oluyor.

Bu kodun çalışabilmesi için projenizin Servlet Api kütüphanesine sahip olması gerekiyor. Eğer kütüphane yoksa şu bağımlılık ile edinebilirsiniz:

<?xml version="1.0" encoding="UTF-8"?>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

Servlet’i çalıştırıp Chrome’un çerezleri arasına baktığımda localhost’ta fist_name ve last_name çerezlerinin eklenmiş olduğunu görüyorum.

Şimdi bizim işimizi yapacak olan web servis koduna bakalım.

CookieParamExample.java

package restService;

import javax.ws.rs.CookieParam;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.MediaType;

/**
 *
 * @author ilkaygunel
 */
@Path("/cookieParamExample")
public class CookieParamExample {
    @GET
    @Produces(MediaType.TEXT_HTML+";charset=UTF-8")
    public String getCookie(@CookieParam("first_name") Cookie firstName,
							@CookieParam("last_name") Cookie lastName) {
        return "Ad Soyad:"+firstName.getValue()+" "+lastName.getValue();
    }
}

Kodumuz oldukça basit arkadaşlar. Tek yaptığı iş first_name ve last_name cookie’lerini @CookieParam notasyonu ile metoda paramete olarak geçirmek. @CookieParam notasyonuna tarayıcıda tutulan cookie’nin adını veriyoruz arkadaşlar. O da o domaine ait olan o isimdeki cookie’yi bulup getiriyor. Burada parametrelerimizi javax.ws.rs.Cookie tipinde tanımladık ve metot içinde bu tipin metotundan faydalandık.

Ekran Çıktısı

Çıktıda gördüğümüz gibi firs_name ve last_name cookie bilgileri başarı ile alındı ve ekrana yazdırıldı.

Bu yazıda da bu kadar arkadaşlar. Gelecek yazıda görüşene kadar sağlıcakla kalın arkadaşlar.

Selam ve Sevgilerimle