Visual JSF ile Login Uygulaması
Yeni bir tutorial ile daha birlikteyiz. Belki de temel olması açısından önce JSP anlatmalıydım ama JSP ile ilgili bol miktarda kaynak bulabilirsiniz. Bu yazımızda MYSQL veritabanında tuttuğumuz kullanıcı adı ve şifrelerle login işlemi yapacağız. Temelde öğreneceğimiz üç şey var: Session içine kullanıcı adını atmak, JSP sayfasıyla java kodunu bind etmek ve faces-config.xml dosyasını kullanmak..
Netbeans IDE 6.7.1 kullanarak görelim. New -> Project -> Java -> Web Application diyoruz. Projenin ismini verdikten sonra Glassfish ya da Apache Tomcat server seçebilirsiniz. İkisiyle de uygulama çalışır. Daha sonra next diyerek Frameworks kısmından Visual Web Java Server Faces seçip Finish diyoruz.
Daha sonra paletten bir textfield sürükle – bırak yapıyoruz. Daha sonra bir passwordfield birer label ve bir de buton ekliyoruz.. Labellerin isimlerini uygun şekilde değiştiriyoruz..
Şimdi veritabanını sisteme ekleyelim. Bunun için solda Projects, Files, Services olarak dizilmiş sekmelerden services sekmesine tıklıyoruz. Oradan veritabanımızı alıp yukarıdaki alana sürükle bırak yapıyoruz.

Yukarıda gördüğünüz gibi sürükle bırak yaptığımız tablo users tablosudur. Sürükle bırak yapıldığında hem page1.jsp hem de SessionBean1.java değişir. Çünkü yapılan dataprovider oluşturulmasıdır. SessionBean1.java’da ise bu dataprovider’a ait rowSet oluşturulur.
İki dosyayı da (Page1.jsp ve SessionBean1.java) kaydediyoruz.
Sırada binding yapmak var.. Bunun için önce Java kodunda bind edeceğimiz nesneleri oluşturmalıyız. Bu nesneler private olup getter ve setter fonksiyonlara sahip olmak zorunda.. Netbeans’te getter ve setter eklemek için Alt + F2 tuş kombinasyonunu kullanabilirsiniz..
Sırasıyla TextField, PasswordField, Button için 3 adet private obje oluşturacağız.
Getter ve setter metodlarını da Alt + F2 kullanarak eklediğimizde java dosyamızı kaydedebiliriz. Sıra geldi JSP kodunu bind etmeye..
Binding yaparken örneğin textField1 için id = “textField1″ kısmından sonra b tuşuna basıyoruz ve otomatik kod tamamlama bizim için binding çıkarıyor. Eğer çıkmazsa boşluk + ctrl tuşlarına basınız. Daha sonra <<binding = “”>> içine #{Page1.userfield} yazdığımızda işlem bitiyor.. Bütün bileşenler için yaptıktan sonra kaydedip kapatıyoruz.
Artık java kodumuzda bunları istediğimiz gibi kullanabiliriz.
Login işlemi Login tuşuna basılınca gerçekleşeceğinden Login tuşuna action eklememiz gerekiyor onu da aşağıdaki gibi sağ tıklayıp Edit Action event handler diyerek yapıyoruz.
Otomatik olarak java kodunda return tipi String olan button1_action() metodu oluşturulur. Bu arada JSP kodu da değişir (Metod eklenmesinden dolayı). JSP kodunu kaydedin bundan sonra işimiz java koduyla olacak..
Öncelikle yapmamız gereken userField ve passwordField içindeki değerleri almak, bunun için aşağıdaki kodları yazıyoruz:
String userFieldString = (String) userfield.getText();
String passFieldString = (String) passwordfield.getText();
Daha sonra bunların veritabanında olup olmadığına bakmalıyız. Bunun için de şu kodları yazalım:
String[] fieldIds = new String[]{"username", "password"};
Object[] values = new Object[]{userFieldString,passFieldString};
DataProvider nesnemizin findfirst metodundan yararlanacağız. Yukarıda fieldIds ile gördüğünüz string dizisinde veritabanı sütun adı yazıyor. values de bu sütunlara ait değerleri içeriyor.
RowKey rk = usersDataProvider.findFirst(fieldIds, values);
Bu kodla kullanıcının olup olmadığını kontrol edebiliriz. Eğer RowKey değişkeni null ise girilen kullanıcı adı / şifre kombinasyonu hatalıdır. İsterseniz bir label bind edip hata mesajı da verdirebilirsiniz.
Sıra geldi SessionBean kullanımına.. Bunun için öncelikle sessionbean1.java dosyasını açıyoruz. Aşağıdaki gibi string tipinde loggedInUsername ve boolean tipinde loggedIn değişkenleri tanımlayıp setter ve getter ekliyoruz.
Dosyayı kaydedip tekrar Page1.java ‘ya dönüyoruz..
Hatırlarsanız en son rowkey null ise null döndür demiştik. null döndürüldüğünde aynı sayfa tekrar açılır. Burada bir sıkıntı yok. Şimdi yapmamız gereken null dönmemiş değeri sessionbean’e atamak ve bir string döndürmek..
Kodun son hali aşağıdaki gibi olacak:
Gördüğünüz gibi success döndürdük. Başka herhangi bir string de döndürebilirdik. Doğru giriş yapanın başka bir sayfaya yönlendirmesini yapacağız. Onun için page2 gibi bir sayfa ekleyelim.
Orada <<hoşgeldiniz Kullanıcı adı>> yazsın istiyoruz. Yapmamız gereken tek şey bir label atıp hoşgeldiniz demek.. O da aşağıda:
Bundan sonra yapılacak tek bir şey kalıyor. O da faces-config.xml dosyasını page1′den success stringi geldiğinde page2′ye yönlendirme yapacak şekilde değiştirmek..
<from-view-id>gelen sayfa</from-view-id>
<from-outcome>gelen string</from-outcome>
<to-view-id>nereye gittiği</to-view-id>
şeklinde istediğiniz yönlendirmeyi yapabilirsiniz..
Bir başka tutorialde buluşmak üzere…









6 Yorum
Jump to comment form | comment rss [?] | trackback uri [?]