Bilal Koçoğlu/ Ağustos 16, 2018/ Servlet

Session Tracking ve Cookie
(Oturum Takibi ve Çerezler)

    Session Tracking ve Cookie başlığı altında Session, Tracking ve Cookie terimlerini ayrı ayrı inceleyeceğiz. Oturum(session) sadece belirli bir zaman aralığı anlamına gelir. Oturum izleme (session tracking) kullanıcının durumunu(verilerini) korumanın bir yoludur. Http protokolü durumsaldır ve oturum izleme (session tracking) tekniklerini kullanarak durumu korumamız gerekir. Sunucuya her istekte bulunulduğunda sunucu istekleri, yeni istek olarak görür. Dolayısıyla bir kullanıcının durumunu belirli bir kullanıcıyı tanımak için korumamız gerekir.(Kullanıcıları birbirinden ayırt etmek için) Http her isteği yeni istek olarak kabul eder. Biz gelen requested göre bir şekilde daha önceki kullanıcıları tanımaya çalışacağız.

Session Tracking and Cookie
Session Tracking and Cookie

Yukarıda da belirtmiş olduğumuz gibi biz, session tracking tekniklerini kullanıcıyı tanımak, yeni kullanıcılardan ayırt etmek için kullanırız. Bunun için yaygın olarak 4 teknik kullanılır. Bunlar;

  • Cookies
  • Hidden Form Field (Gizli Form Alanı)
  • URL Rewtiriting (Yeniden URL Yazma)
  • HttpSession

     Şimdi tüm bu teknikleri tek tek inceleyelim, avantajlarını ve dezavantajlarını ele alalım ki ihtiyaç duyduğumuzda karşımızdaki senaryoya uygun olarak hangisini seçeceğimize kara verelim. Unutmamamız gereken nokta karşımıza çıkan tüm iş ve senaryolarda her zaman aynı tekniğin maksimum performansı veremeyeceğidir.

Cookie

     Çerez, çoklu müşteri istekleri arasında kalıcı olan küçük bir bilgidir. Bunun anlamı bizim tarayıcımızın içine saklanmış küçük bilgilerdir ve (kullanıcı kapatmadığı sürece) o tarayıcıdan bize gelen her request(istek) bu küçük bilgileri alıp gelir. Bizde bu bilgileri karşılaştırarak requesti tanımaya, kullanıcıyı takip etmeye çalışırız. Bir tanımlama bilgisi, bir ada, tek bir değere ve bir açıklama, yol ve alan adı niteliği, maksimum yaş ve bir sürüm numarası gibi isteğe bağlı niteliklere sahiptir.  

     Varsayılan olarak her request, web conteiner için yeni(daha önce gelmemiş bir kullanıcıdan gelen) request olarak kabul edilir. Cookie tekniğinde, servletten gelen response ile çerez ekliyoruz. Böylece çerez tarayıcı önbelleğinde kalıyor ve her request ile bize geri geliyor. Bundan sonra kullanıcı tarafından request gelirse, cookie varsayılan olarak istekle birlikte ekleniyor. Böylece, kullanıcıyı eski kullanıcı olarak tanıyoruz. Çerezler her zaman tek tipte bulunmaz. İki çeşit çerez mevcuttur bunlar;

Cookie Çeşitleri
  • Kalıcı olmayan çerezler → Yalnızca tek oturum için geçerlidir. Kullanıcı tarayıcıyı her kapattığında kaldırılır.
  • Kalıcı çerezler                → Birden çok oturum için geçerlidir. Kullanıcı tarayıcıyı her kapattığında
    kaldırılmaz. Yalnızca kullanıcı oturumunu kapattığında veya oturum kapatıldığında kaldırılır.

Çerezlerin avantajı kullanıcı bilgilerini korumanın ve takip etmenin en basit tekniği olması ve istemci tarafında tutulmasıdır. Bunun bize olan faydası server tarafında tutarak azda olsa yer kaplamaması ve bizi yormamasıdır. Tabiki avantajı olan herşey gibi çerezlerinde dezavantajları mevcuttur. Eğer kullanıcı tarayıcıdan çerezleri devredışı bırakırsa sisteminiz request ile gelen bir çerez olmadığından oturum takibi yapamayacaktır. Bu sizi o kadar korkutmasın ve çerezlere küsmeyin. G-Mail, N11.com gibi çoğu büyük projede kullanılan bu yöntem illa ki sizin de işinize yarayacaktır. Bir diğer dezavantajı ise çerezler ile sadece String ifadeleri saklayabiliyor olmamızdır.

Cookie sınıfının iki adet constructor(yapıcı method) u bulunmaktadır.

  • Cookie() 
  • Cookie(String name, String value)

Bunun yanında elinizin altında bulunması gereken kullanabileceğiniz bazı methodları şöyle sıralayabiliriz;

  • public void setMaxAge(int expiry) → Çerezin maksimum süresini saniye cinsinden ayarlar.
  • public String getName() → Çerezin ismini döndürür. Bu isim oluşturulduktan sonra
    değiştirilemez.
  • public String getValue() → Çerezin değerini döndürür.
  • public void setName(String name) → Çerezin ismini değiştirir.
  • public void setValue(String value) → Çerezin değerini değiştirir.

Bu methodlar dışında request ve response üzerinde uygulayabileceğimiz çerezlerle çalışırken çok fazla kullandığımız iki methodda şunlardır;

public void addCookie(Cookie ck) → Yanıta(response) çerez eklemek için kullanılır.

public Cookie[] getCookies() → Requeste uygulanır ve içindeki tüm çerezleri Array tipinde almamızı sağlar.

Cookie Örnek

Bu konu hakkında bolca örnek çözmenizi tavsiye ederim ayrıca isteklerinize göre bu konuyla ilgili bir örnek paylaşabiliriz. Sorularınızı yoruma yazarsanız en kısa sürede çözüme kavuştururuz. Bir sonraki derste hidden form field, URL rewtring ve duruma söre HttpSession konularını inceleyeceğiz.

Kendinize iyi bakın.

Share this Post

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*