Yusuf Çakmak

#gdg #iot #java #android

16

Şub

2015

Java Servlet – HttpSession ile Session Yönetimi ve Kullanım Örneği




JavaEE veya Java Servlet ile yeni ilgilenmeye başlıyorsanız aşağıda linklerini verdiğim yazıları bu yazıdan önce okumanız daha iyi olacaktır.

Java ile Web Uygulaması Geliştirme 101
Java Servlet Dersleri – Giriş
Servlet ile Basit Bir Giriş Uygulaması

Session, istemci ile sunucu arasındaki iletişimde, istemciden gönderilen isteklerin devamlılığını sağlar. Bu yazıda HttpSession objesini kullanarak bu işlemi nasıl gerçekleştireceğimizi göreceğiz.

HttpSession ile Session Yönetimi ve Kullanım Örneği

Servlet API, oturum yönetimini HttpSession arayüzü üzerinden sağlar. Aşağıda bulunan metotları kullanarak HttpServletRequest nesnesinden session’ı alabiliriz. HttpSession bize gelecek isteklerde objeleri özellikler gibi kullanmamızı sağlar.

HttpSession getSession() – Bu metot her zaman HttpSession nesnesini döndürür. İstek ile birlikte session nesnesini döndürür eğer bir session nesnesi yoksa yeniden yaratır ve istek ile birlikte yaratılan session nesnesini döndürür.

HttpSession getSession(boolean flag) – Bu metot, istek session’a sahipse HttpSession nesnesini döndürür, sahip değilse null döndürür.

HttpSession’ın bazı önemli metotları :

String getId() – Session’a atanan benzersiz bir tanımlayıcıyı String olarak döndürür.

Object getAttribute(String name) – Session benzersiz bir isim barındırıyorsa objeyi döndürür. Session benzersiz bir isim barındırmıyorsa null döndürür.

long getCreationTime() –  Session’ın yaratıldığı zamanı döndürür. getLastAccessedTime() yönetime ile de son erişilen zamanı elde ederiz.

setMaxInactiveInterval(int interval) – Saniye olarak spesifik olarak belirtilen zamanda istemci ve servlet konteyner arasındaki iletişimi keser. setMaxInactiveInterval() metotu ile session zaman aşımı değerine erişiriz.

ServletContext getServletContext() –  Uygulama için ServletContext nesnesini döndürür.

boolean isNew() – İstemci session’a ulaşmadıysa veya session’a katılmamayı seçtiyse true döndürür.

void invalidate() – Oturumdan sonra bağımlı nesnesinin bağlantısını keser ve geçersiz kılar.

JSESSIONID Cookie

HttpServletRequest getSession() metodunu kullandığımız zaman yeni bir istek oluşturulur ve HttpSession objesi oluşturulur ayrıca cevap objesi olarak JSESSIONID, Cookie  olarak eklenir. Bu Cookie istemciden gelecek isteklerde HttpSession nesnesi tanımlamak için kullanılır. JSESSIONID session takibi için kullanılır, uygulamamızda oluşabilecek session problemleri ile ilgili kullanmamız gerekiyor.

HttpSession ile Session yönetimi örneği yapıp, orada görelim nasıl kullanacağımızı. Eclipse ile Dinamik Web Projesi oluşturuyoruz. Klasör yapımız aşağıdaki gibi olacak.

Dinamik Web Projemizi oluşturduktan sonra Java Resources altında bulunan src klasörü altında paketimizi ve sınıflarımızı oluşturuyoruz. WEB-INF klasörü altında web.xml dosyamızı oluşturmayı unutmuyoruz. Login.html LoginSuccess.jsp ve CheckoutPage.jsp dosyalarımızı Web-Content altında oluşturuyoruz.

httpsession-strc

 

web.xml

login.html

Login Servlet sessionı yaratacak ve gelecek istekler için belirlediğimiz özellikleri session’a dahil edecek.

LoginSuccess.jsp

JSP kullandığımızda, konteyner otomatik olarak session oluşturur. Kullanıcının login sayfasına geldiğinden emin olmak için bu session’ın null olup olmadığını kontrol etmemiz gerekiyor. Aşağıda paylaştığım CheckoutPage.jsp dosyasında bu kontrolü sağlayacağız.

LogoutServlet.java

Projemiz hatasız şekilde çalıştığında aşağıdaki ekranları elde edeceğiz.

login

LoginSuccess

CheckOut

Github hesabım üzerinden yazılarımdaki örnek uygulamaları paylaşıyorum. Bu yazıya ait örnek proje için bu linke bakabilirsiniz.

 

 

About Author

Yusuf Çakmak

Teknoloji ile ilgilenmeyi seven, herhangi bir teknolojiye kendini ait hissetmeyen, zaman buldukça farklı dilleri, kütüphaneleri, cihazları denemeye çalışan kendi halinde biriyim.

 

Bir Cevap Yazın

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