19.Java Server Faces
Java Server Faces (JSF) 2004 senesinde çıkmış olan bir frameworktür. JSF web uygulamalarının daha kolay bi biçimde geliştirilmesini sağlayan bir yapıda tasarlanmıştır. JSF ile birlikte ayrıca Model-View-Controller kalıbı da kullanılabildiğinden, geliştirme daha kolay yapılabilmektedir.
Anahtar Notlar: Model-View-Controller (MVC) tutulan datanın modelini, kullanıcı arayüzünü ayıran ve bunları Controller isimli bir sınıf yardımıyla kullanılmasını sağlayan bir tasarım kalıbıdır. (Design Pattern)
JSF ile bir IDE kullanılması neredeyse zorunludur. Burada JSF ile NetBeans isimli IDE kullanılacaktır. Notların yazıldığı esnada 8.2 versiyonu kullanılacaktır. NetBeans IDE bedava netbeans.org sitesinden indirilebilir. Ayrıca uygulamalarımızda GlassFish isimli uygulama sunucusundan da bahsedilecektir. JSF uygulamaları yine bir uygulama sunucusu üzerinde çalışmaktadır.
Anahtar Notlar: JSF aslında genel bir uygulama sistemidir, bir çok JSF APIleri kullanan ortamlar bulunmaktadır. Örnek olarak PrimeFaces gibi teknolojiler verilebilir.
NetBeans ile bir JSF uygulaması oluşturmak için adımlar şunlardır;
- Yeni Proje Seçeneklerinden, Java Web kategorisindeki, Web Application bölümü seçilir.
- Daha sonra proje ismi ve lokasyonu belirlenir. Server ayarlarından istenilen server seçilir, burada GlassFish 4.1.1 versiyonu kullanılacaktır.
- Frameworks kısmından JavaServerFaces seçilir. Burada Libraries bölümünün JSF 2.2 olmasına dikkat edilmelidir.
JSF içerisinde çeşitli JSF'e özgür bir takım kontrol elemanları bulunmaktadır. Bunlar ileride açıklanacaktır. JSF teknolojisinde Controller sınıflar için, Bean özelliğine sahip sınıflar kullanılmaktadır. Temel Bean sınıfları tipik olarak @ManagedBean annotasyon ile ilişkilendirilmelidir. NetBeans IDE'si ile bir @ManagedBean çok kolay bir şekilde eklenebilir. Proje üzerinde sağ tık ile new seçeneğinden JSP ManagedBean seçilir. Burada Bean sınıfına ilişkin çeşitli özellikler verilebilir. Örn sınıf ve paket ismi gibi.
Anımasanacağı gibi Bean sınıfları özeldir. @ManagedBean javax.faces.bean paketi içerisinde bulunmaktadır. JSF de fasulye nesnelerinin kullanılabilmesi için #{
Merhaba #{simpleManagedBeanController.message}
Burada message Bean sınıfı içerisindeki, get ve set'i olan elemandır. Bu yapıda aslında 'message içerisindeki bilgiyi getir' emri verilmektedir. İstenirse bu tarz bilgiler, JSF'e ilişkin input elemanlarında da gösterilebilmektedir. JSF görsel elemanları HTML kontrollerine çok benzer ve tag olarak h: ile belirtilir.
Sınıf Çalışması: Basit bir 4 işlem hesaplaması yapan ve bölme işleminde belirsizlik ve tanımsızlık durumlarını işlem yapmayarak kullanıcıya bildiren uygulamayı JSF ile yazınız.
not: javax.faces.model paketi içerisinde bir çok GUI elemanına ilişkin sınıf bulunmaktadır. SelectItem isimli sınıf, bir dropdownList html elemanının içerisine gömülen türe ilişkin kullanılmaktadır.
JSF içerisinde Controller sınıflarıyla eşleştirilen sınıflar HTML tarafında da çağırılabilir. h:inputText elemanı tipik inputText elemanının JSF halidir ve bunun value elemanına bir Bean verildiğinde, girilen değer bu Bean içerisine set metodu ile yerleştirilir. Aslında HTML içerisinde kullanılan Beanler sayesinde iletim doğrudan Controller sınıfına gelebilmektedir.
DropdownList elemanı h:selectOneMenu isimli takı ile belirtilebilir. JSF ile f: başlatılan takılar genel olarak core bazlı takıları içermektedir, gösterim amaçlı kullanılabilir.
Bazı Mesajların İletilmesi
Mesajların iletilmesi için FacesMessage isimli bir sınıf kullanılabilir. Bu sınıfın constructor'ı tipik olarak hatanın türünü ve mesajı almaktadır. FacesMessage nesnesi FacesContext'ten elde edilen Instance'a mesaj olarak eklenerek bu işlem yapılabilir. JSF'te türlere ilişkin geçerlilik kontrolü Beanler sayesinde otomatik olarak yapılabilmektedir.
JSF'te Tipik Form Elemanları
JSF içerisinde genel olarak formlarda kullanılan HTML elemanları şunlardır. HTML elemanlarına bileşen (component) denilmektedir.
Component (Bileşen) | Tag | Description (Açıklama) |
---|---|---|
UI Column | h:column | DataTable bileşenenin bir kolonunu temsil eder. |
UI Command | h:commandButton | formu submit eden butondur. |
UI Command | h:commandLink | bir bağlantı işlemini temsil eder. |
UI Data | h:dataTable | datalardan oluşan bir tabloyu temsil eder. |
UI Form | h:form | bir geliş formunu temsil eder. |
UI Input | h:inputHidden | formun hidden elemanı |
UI Input | h:inputSecret | password elemanı |
UI Input | h:inputText | giriş elemanı |
UI Input | h:inputTextArea | çok satırlı giriş elemanı |
UI SelectBoolean | h:selectBooleanCheckbox | seçme görsel elemanı, checkbox |
UI SelectItems | h:selectItems | çoklu seçim elemanı |
UI SelectOne | h:selectOneRadio | RadioButton grubunu temsil eder. |
Yukarıdaki elemanlardan daha fazla bulunmaktadır, burada en çok kullanılanlar bulunmaktadır. Ayrıca JSF içerisinde ismine core takı denilen f: üst üste ile başlayan takılarda bulunmaktadır. Bu takılar JSF ve HTML takıları içerisinde de kullanılabilmektedir. Bu takıların tablosu aşağıdaki gibidir.
//Tablo Eklenecek
Sınıf Çalışması