JSF

JSF Dersleri – Cookie Kullanımı

Merhabalar arkadaşlar. Bu yazı içerisinde sizlerle JSF içinde Çerez ( Cookie ) kullanımını öğreneceğiz.

Çerezler intenette gezinirken bir takım bilgileri barındıran, tarayıcımız tarafından bilgiyarımızda tutulan  metin dosyalarıdır. Bu bilgiler kullanıcı adı,şifre olabilir ya da alışveriş sitelerindeki sepetlerimiz olabilir. Bugün çok sayıdaki web sitesi çerezleri kullanmaktadır. Tarayıcınızdan çerezlere baktığınızda çok sayıda çerezin kaydedilmiş olduğunu göreceksiniz.

Şimdi biz de bir örnek yaparak çerezin nasıl oluşturulduğunu ve nasıl okunduğunu göreceğiz. Bu yazdaki kodlara şuradan  ulaşabilirsiniz. Örneğimiz alış veriş sepeti mantığına benzer olacak. Şimdi örneğimizi inceleyelim.

CookieBean.java

 

CookieBean sınıfımız içinde PostConstruct nostasyonu ile listelerimizi oluşturuyor ve sayfada gösterilecek listeyi dolduruyoruz.

  • addToList metodu içerisinde öncelikle JSF sayfasından gönderilen kişiyi listemize ekliyoruz.
  • Daha sonra existingCookie adında bir Cookie nesnesi tanımlıyoruz. Bu nesneyi Cookie’nin tarayıcıda olup olmadığına bakmak ve çerezlere eklemek için kullanacağız.
  • Akabinde bir HttpServletRequest nesnesini FacesContext’ten o anki isteği getRequest metodu ile alarak tanımlıyoruz .
  • HttpServletRequest nesnesinden sonra bir Cookies dizisi tanımlıyoruz ve bu diziye HttpServletRequest interface’nin içindeki getCookies metodundan dönen Cookies dizisini atıyoruz.
  • Elde ettiğimiz Cookies dizisinin null olup olmama durumuna göre bir for döngüsü döndürüyoruz ve bizim istediğimiz isimdeki bir çerezin tarayıcda olup olmadığına bakıyoruz. Eğer varsa existingCookie değişkenine bu çerezi atıyoruz.
  • Akabinde bir if-else yapısı ile existingCookie’nin hala null olup olmadığına bakıyoruz. Önceki if’den null dönmüş olabilir çünki.
  • Eğer existingCookie halen null ise yine FacesContext içinden bir HttpServletResponse nesnesi tanımlıyoruz. Cookie sınıfından bir nesne türetip bu sınıfın yapılandırıcısına 2 parametre veriyoruz. Birinci parametrede çerezin ismini söylüyoruz, ikinci parametrede de çerezin tutacağı değeri söylüyoruz. İkinci parametreyi yazarken iş biraz sıkıntı gördüğünüz gibi. Öncelikle listeyi toString ile String’e çeviriyoruz çünki Cookie sınıfı yapılandırıcısı sadece String’leri parametre olarak kabul ediyor. Ardından String’e çevirilmiş listeyi kodluyoruz çünkü çerez yapısı İngilizce karakter dışındaki karakterler için kodlama zorunluluğu getiriyor. Bu zorunluluğu biz de URLEncode sınıfı ile çözüyoruz. Bu sırada liste String’e çevirildiği için başına ve sonuna [ ve ] karakterleri geliyor. Onları silmek ya da silmemek size kalmış. Ben silmeyi tercih ettim.
  • Cookie nesnesinin setMaxAge metodu ile çerezin ne kadar zaman saklanacağını bildiyirouz. Bu örnekte çerez 365 saniye saklanacak. Mesela siz bir gün saklanmasını isterseniz 86400 değerini atamanız gerekecek.
  • setComment ile çereze bir yorum koyuyoruz.
  • Son olarak HttpServletResponse nesnesinin addCookie metoduna elimizdeki Cookie nesnesini parametre olarak verip kullanıcıya cevap verildiği sırada çerezi tarayıcıya kaydettiriyoruz.
  • Eğer bu çerez daha önce oluşturulmuşsa, mevcutsa bu kez çerezin değerini güncellemek için setValue metodunu kullanıyoruz ve parametre olarak yine çereze kaydetmek istediğimiz veriyi veriyoruz.
  • Aynı şekilde süresini ve yorumunu atıyoruz. Ardından HttpServletResponse ile çerezi tarayıcıya kaydediyoruz.

CookieReading.java

CookieReading sınıfı içinde getCookieValue metodu ile az önce yaptığımız işlemi yapıyor, Cookie dizisi elde edip diziyi tarıyor ve bizim çerezimisin değerini getValue metodu ile alıyoruz. Bunu bir değişkene koyuyoruz ve bu değişkeni URLDecoder sınıfını kullanarak decode edip döndürüyoruz çünkü çereze kaydederken UTF-8 ile kodlayıp koymuştuk.

index.xhtml

Index kodumuz içinde Ekle butonu ile tıklanan ismi Java sınıfına geçiriyoruz ve metot da listeye ekliyor.

listingPeople.xhtml

ListingItems sayfasında çerezden okunan değeri yazdırıyoruz.

Ekran Çıktısı

Projeyi çalıştırdığımızda bu sayfa bizi karşılıyor. Şimdi örneğin Akın Kaldıroğlu ve Melih Sakarya isimlerine tıklıyorum.

Projeyi çalıştırdığımızda bu sayfa bizi karşılıyor. Şimdi örneğin Akın Kaldıroğlu ve Melih Sakarya isimlerine tıklıyorum ve listingPeople sayfasına gidiyorum.

Sayfada çerezden okunan değerler gösterildi. Şimdi tarayıcıdan çıkış yapıp tekrar bu sayfayı açıyorum.

Sayfada çerezden okunan değerler gösterildi. Şimdi tarayıcıdan çıkış yapıp tekrar bu sayfayı açıyorum.

Gördüğünüz gibi saklanan çerezden tekrar okuma yaptı Java kodumuz.

Gördüğünüz gibi saklanan çerezden tekrar okuma yaptı Java kodumuz.

Chrome tarayıcı içinde çerezimiz de bu şekilde yer alıyor.

Chrome tarayıcı içinde çerezimiz de bu şekilde yer alıyor. Türkçe olmayan karakterler kodlanarak kaydediliyor.

Bu yazıda da bu kadar arkadaşlar. Çerezin JSF projesinde nasıl kullanıdlığını öğrenmiş olduk. Eğer sizin de şu nasıl olur acaba felan dediğiniz konular olursa yoruma yazar ya da [email protected] adresine mail atarsanız araştırıp bir yazı yazmaya gayret ederim. Başka yazıda görüşmek üzere sağlıcakla kalın.