JSF ( Java Server Faces ) Yapısı ve Management Bean

Java Server Faces (JSF) java web uygulamalarında kullanılan bir yapıdır.

Java web programlama yaparken servlet ve Jsp kullanrak kod tasarlarken benzer bir kulanım söz konusudur ama JSF kod tasarımlarında alt yapı çok daha farklıdır. Şimdi Jsf nin bu farklılıklarını inceleyerek başlayalım.

Jsf sayfaları facelets (xhtml) uzantılı dosyalardır. Html den farklı olarak tag kullanımlarında hataya töleransı yoktur. En ufak bir tag kapatmayı unutsanız bile sayfa derlenmeyecektir. javanın güvenli programlamaya verdiği önemi göz önünde bulundurursak bunun çok faydalı bir şey olduğunu anlamış oluruz.

Web programlamada objelerin yaşam süreçleri (life cycle) vardır. Web programalmada Objeler 2 kısıma ayrılır. Birincisi sayfa üzerinde yani session düzeyinde diğeri ise database düzeyinde. Bu objelere database object te diyebilriz.

Bildiğiniz gibi Java programlamalarının temeli objelerin kontrol altında tutulup performanslı kullanılmasına dayanmaktadır. Bunun içinde bu objelerin kontrollerinin sağlanması için teknolojiler bulunmaktadır. (örn: JPA, EJB vs..) diğer yazılarımda bu teknolojilerdende bahsedeceğim. Şimdi gelin bu Session düzeyinde yani sayfada yaşayan objelerin yaşam süreçlerini bir inceleyelim.

Management Bean

Management Bean yapısı Jsf framework e özel bir yapıdır. Bu yapı sayesinde Session düzeyinde yani sayfa üzerinde yaşayan objelerin yaşam döngülerini kontrol altına alabiliriz. Tabi sadece yaptığı iş bu değildir. Aynı zamanda ve asıl görevi class yapılarımızda yarattığımız objelerin Jsf sayfalarında tanımlanması ve kullanılmasını amaçlamaktadır. Öncelikle Management Bean yapısını inceleyelim daha sonra kullanımından bahsedelim.

Management Bean sıradan bir java class ıdır. Buna Bean özelliğini kazandırmak için “faces-config.xml” de tanımlama yapmamız gerekmektedir. Şimdi nerden çıktı bu “faces-config.xml” demeyin. Dediğimiz gibi JSF yapısında kontrol mekanizmaları çok sayıda bulunmaktadır. Yazının devamında bunlarada deyineceğim. JSF 1.2 de faces-config.xml’de tanımlamaları elle oluşturmamız gerekiyordu ama jsf 2.0 ile annotation kullanarak bu işlemleri class düzeyinde halledebiliyoruz. Tek yapmanız gereken şey Management Bean yapmak istediğiniz class ın başına @ManagementBean annotation eklemeniz. Tabi türetildiği class’ın (java.faces.bean) olmasına dikkat edelim çünki kütüphanede bu isimde iki annotation mevcuttur.

ManagementBean’e bir isim vermezseniz otomatik olarak class’ınızın ismiyle kaydolacaktır.

@Management(name=”myBean”)

Şeklinde isim verebilirsiniz. Artık Jsf sayfalarından bu Bean’e ulaşmak istediğinizde sadece bu isimi kullanmanız yeterli olacaktır.

Peki bu Management Bean ler nasıl objelerin yaşam döngülerini kontrol altında tutuyorlar. Şimdi bunu inceleyelim.

Management Beanlerin Scope alanları mevcuttur. Yani Bean in dolayısıyla Bean içinde oluşturulan objelerin yaşam sürelerini belirleyen bir parametredir.

Scope Alanları

SessionScoped : Bean’in Session boyunca yaşamasını sağlayan Scope alanıdır. Session sonlanana kadar objeler yaşamaya ve girilen değerlerini korumaya devam edecektir.

RequestScoped: Bir request – Response süresince yaşayan Bean alanıdır. Yani sayfa refresh olursa Bean ölür ve objeler değerlerini kaybeder.

ViewScoped: sayfa görünümü değişmediği sürece yaşayan Bean ler yaratmamızı sağlar. Yani Bean sayfa refresh olsada ölmez. Başka bir seyfaya geçiş yapılırsa Bean ölür.

Scope alanlarının Bean’lere tanımlanması içinde yine annotation’lar kullanılır.  @ManagementBean annotation’unun altına gelecek şekilde.

@SessionScoped

@RequestScoped

@ViewScoped

Şeklinde annotationlar yazılarak kullanılabilir.

 

bir sonraki yazımda Jsf tasarımını örnek bir uygulamayla anlatmaya çalışacağım. umarım faydalı olmuştur

 

Cumhur ÇAĞATAY

About Cumhur Çağatay

Computer Engineer