Bilal Koçoğlu/ Aralık 19, 2018/ Servlet

CRUD in Servlet

Merhaba arkadaşlar bu derste Servlet ile veritabanı işlemleri yapacağız. Hibernate konusuna henüz geçiş yapamadığımızdan veritabanı işlemlerini gerçekleştirirken JDBC kullanacağız. Aynı zamanda şimdiye kadar Servlet kategorisi altında incelediğimiz çoğu başlığı içinde barındıran genel bir örnek olacaktır. Bu başlıklar arasında Cookie, ServletContext, RequestDispatcher, ContextListener ve Filter gibi faydalı içerikler mevcuttur.

Daha fazla sözü uzatmadan örneğimizde uygulayacağımız senaryodan biraz bahsedip örneğe geçmek istiyorum. Yapacağımız örnekte kullanıcı kayıt olup giriş yapabilecek, çerezler kullanılarak kullanıcının doğrudan giriş yapabilmesi sağlanacak, şifre değiştirme işlemi yapılabilecek. Örneği yaparken kodu paylaştıktan sonra önemli yerler kod üzerinden incelenecektir.

İlk olarak dosya yapısına bir göz atalım.

Veritabanı
Dosya Yapısı
Servlet ile Veritabanı İşlemleri
Servlet ile Veritabanı İşlemleri
pom.xml
ContextListener.java

Burada değinmek istediğim birkaç nokta var. Biz ServletContextListener konusunu anlatırken ne tür durumlardan kullanabileceğimizden uzun uzun bahsetmiştik. Bu örnekte veritabanı bağlantısını kurmak için kullandık. ContextDestroyed methodunun ise uygulama sunucudan kaldırılırken sadece bir defa çağrıldığını belirtmiştik. Bu methodu uygulama kaldırıldığında veritabanı bağlantısı hala açıksa onu kapatmak için kullanılır.

index.jsp

Bu sayfada kullanıcı giriş sayfasına veya kayıt ol sayfasına yönlendirilir.

register.jsp

Kullanıcıdan kayıt olabilmesi için gerekli bilgiler bu sayfada alınacaktır.

FilterRegister.java

Filter konusunda bahsettiğimiz üzere, filtrelerin gelen requestleri yakalayabilmesi için bir controller ile urlPattern vasıtasıyla bağlanmaları gerekir. Birazdan paylaşacağım ServletRegister ile FilterRegister, ‘/register’ urli ile birbirlerine bağlanmışlardır. Burada filter, gelen requestteki parametrelerin eksiksiz olup olmadığını kontrol etmekle görevlidir. Gelen parametrelerde eksik veya boş bir alan varsa ServletContext aracılığıyla kullanıcıya cevap gönderilmiştir.

ServletRegister.java

ServletRegister controllerı, gelen verilere uygun bir user nesnesi oluşturarak bunu veritabanına kaydeder. Bu kayıt işlemi için tüm veritabanı işlemlerini barındıran UserDao classını kullanır. Bu class aşağıda detaylı bir şekilde incelenecektir. Kayıt işleminin sonucuna göre kullanıcıya mesaj gösterilir.

UserDao.java

Yazımızın başında da bahsettiğimiz gibi daha Hibernate konusunu incelemediğimiz için örneğimizde veritabanı bağlantısı JDBC ile sağlanmıştır. Tüm veritabanı işlemleri yukarıdaki class içinde toplanmıştır. Bu class içindeki methodlar incelendiğinde PreparedStatement içinde veritabanı sorgularının yazıldığını görebiliriz. Hibernate kullandığımızda bu işlemleri java kodu ile çok daha kolay bir şekilde gerçekleştireceğiz. 

login.jsp

Bu sayfada kullanıcı adı, şifre ve tercihe göre cookie kullanacağımız beni hatırla alanları mevcuttur. Kullanıcı bilgileri doldurup giriş yaptığında istek ServletLogin controllerına gitmeye çalışacaktır fakat FilterLogin bu isteği yakalarak bazı doğrulamalar gerçekleştirecektir.

FilterLogin.java

Burada ilk olarak kullanıcı daha önceden beni hatırla seçeneğini işaretleyerek giriş yapmış mı yapmamış mı kontrol edilir. Bu kontrol işlemi cookie aracılığı ile yapılmaktadır. Eğer uygun cookielerin varlığı tespit edilirse kullanıcının verileri eksiksiz girip girmediğine bakmaksızın veritabanı kontrol edilir ve kullanıcı girişi gerçekleştirir. Eğer cookie bulunamazsa kullanıcıdan bilgileri eksiksiz girmesi istenir.

ServletLogin.java

Cookie konusunu incelerken de belirttiğimiz üzere (kullanıcı tarayıcıdan çerezleri engellemediği sürece) Cookie kullanarak kullanıcıyı tanımamız mümkündür. Burada eğer beni hatırla seçeneği işaretlenmişse kullanıcının username ve password bilgileri cookie olarak eklenmektedir. Çerezlerin nasıl çalıştığını izleyebilmemiz için burada eklenen çerezlerin geçerlilik süresi 300 saniye olarak belirlenmiştir.

home.jsp
ServletLogout.java

Kullanıcı çıkış yap butonuna tıkladığında çerezler kaldırılır ve ServletContext içinde yer alan giriş yapmış kullanıcı ile ilgili bilgiler temizlenir.

settings.jsp

Bu sayfa kullanıcının mevcut şifresini değiştirebilmesi için oluşturulmuştur. Girilen bilgiler FilterUpdate sınfından geçtikten sonra ServletUpdate controllerına ulaşır ve şartlar uygunsa şifre güncelleme işlemi gerçekleştirilir.

FilterUpdate.java
ServletUpdate.java
User.java

Son olarak bu sınıf, veritabanındaki tablo ile eşdeğer olarak tanımlanmıştır. Bunun sebebi veri karmaşıklığına yol açmamaktır. Bu örnekle beraber Servlet konusunu sonlandırmış bulunuyoruz. Bir sonraki dersten itibaren JSP konusuna geçiş yapacağız. Herkese iyi çalışmalar dilerim.

Uygulama kaynak kodu : https://github.com/bilalkocoglu/webgunlugum-crud

Share this Post

Leave a Comment

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

*
*