Jsf 2.0 İle Login.jsf (with PrimeFaces)
Bu defa size login işleminden bahsedeceğim.Aslında işlem biraz basit
ama biraz java bean ile durumları oynayabilirsiniz.Örnek olarak Jpa ile veritabanına baglanarak login işlemini onaylatabilirsiniz.Guvenlik durumunu ayarlayabilirsiniz.Bu gibi durumları bean içinde yapabilirsiniz.Şimdilik ben veritabanına falan baglanmayacağım.Basit olarak bir şifre olacak bu şifrenin girilip girilmediğini onaylayacağız.Yanlış veya boş geçilme durumunda ise bazı mesajlar ekrana çıkartacağız.
Şimdi yine bir önceki anlattığım gibi araçlar kullandım.Tabiki bazı resim ve cssler için oynamanız gerekebilir.Şimdi ilk olarak yapmamız gereken yine aynı şekilde bir dynamic web project acmalıyız.
File->New->Dynamic Web Project
Bundan sonra web.xml dosyamızı jsf ve primefacese göre configire etmemiz lazım.
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Calendar</display-name> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <!-- Prime Resource Servlet --> <servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> </servlet> <!-- Prime Resource Mapping --> <servlet-mapping> <servlet-name>Resource Servlet</servlet-name> <url-pattern>/primefaces_resource/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> |
Bu işlemi yaptıktan sonra şimdi yapmamız gereken xhtml sayfamızı tasarlamamız.Tabi ki burada sizin isteginize ve zevkinize kalmıs bir durumdur.Benim suan yaptıgım tasarımın kodu aşağıdaki gibidir.
login.jsf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.prime.com.tr/ui"> <h:head></h:head> <h:body> <p:panel id="panel" header="Üye Girişi" footer="Mehmet Demircioğlu"> <h:outputLabel value="Giriş İçin İcona Tıklayınız--->"></h:outputLabel> <h:outputLink id="loginLink" value="javascript:void(0)" onclick="dlg.show()" title="login"> <p:graphicImage value="/images/login.png" /> </h:outputLink> </p:panel> <p:growl id="growl" showDetail="true" life="3000" /> <p:dialog id="dialog" header="Kullanıcı Girişi" widgetVar="dlg"> <h:form> <h:panelGrid columns="2" cellpadding="5"> <h:outputLabel for="username" value="Kullanıcı Adı: *" /> <h:inputText value="#{loginBean.username}" id="username" required="true" requiredMessage="Kullanıcı Adını Bos Gecemezsiniz." /> <h:outputLabel for="password" value="Şifre: * " /> <h:inputSecret value="#{loginBean.password}" id="password" required="true" requiredMessage="Şifreyi Bos Gecemezsiniz"/> <f:facet name="footer"> <p:commandButton value="Giriş" update="growl" actionListener="#{loginBean.login}" oncomplete="handleLoginRequest(xhr, status, args)"/> </f:facet> </h:panelGrid> </h:form> </p:dialog> <script type="text/javascript"> function handleLoginRequest(xhr, status, args) { if(args.validationFailed || !args.loggedIn) { jQuery('#dialog').effect("shake", { times:3 }, 100); } else { dlg.hide(); jQuery('#loginLink').fadeOut(); } } </script> </h:body> |
Bu işlemi yaptıktan sonra artık java kodlarımızı konusturabiliriz.Java Beanımız aşagıdaki gibi kod şeklindedir.
LoginBean.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package org.mhmt.dem; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.context.FacesContext; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import org.primefaces.context.RequestContext; @ManagedBean(name="loginBean") @RequestScoped public class LoginBean { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public void login(ActionEvent actionEvent) { RequestContext context = RequestContext.getCurrentInstance(); FacesMessage msg = null; boolean loggedIn = false; if( username.equals("Mehmet") && password.equals("jdeveloper")) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("HOŞ GELDİNİZ. " + username + " Kullanıcımız. " + "!")); } else { loggedIn = false; msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Hatalı Giriş", "Şifre veya Kullanıcı Adınız yanlış.."); } FacesContext.getCurrentInstance().addMessage(null, msg); context.addCallbackParam("loggedIn", loggedIn); } } |
İşlemleri tamamladıktan sonra artık çalıştırabiliriz.Web browsera şu linki yazarak çalıştırabiliriz.
http://localhost:8080/LoginApplication/Login.jsf
Artık işlemler tamamlanmıstır.Hepinize kolay gelsin.

İlk olarak jsf nedir? Bu soruyu kısaca açıklayalım.Jsf yeni nesil web uygulama çatısı diye açıklayabiliriz.MVC tasarım destğini oldugunca kullanması avantajlarından sayailiriz.Bazı özelliklerinden bahsedecek olursak;




Bu yaz okuduğum kitaplar içerisinde en güzellerinde biri diyebilirim.Kitabı okumamın ve seçmemi nedenlerinden biri kitabın kapak kısmında bulunan “Hayatımızı tekrar,tekrar ve tekrar yaşamak zorunda kalsaydınız…” cümlesi diyebilirim.Kitap inanılmaz bir derecede sürükleyici ve enterasan olaylarla doludur.