JSF Ile Verileri Listeleme
- Sevdanur GENC

- Mar 25, 2012
- 3 min read
Java Server Faces (JSF), Java tabanli web uygulamalarini kolaylastirmak icin MVC mimarisini yani Model View Controller mimarisini uygun bir sekilde kullanarak gelistirilmis bir framework'tur.
JSF, guclu ve dinamik web uygulamalari gelistirmeyi kolaylastiran web tabanli ara yuzler hazirlamak icin tasarlanmistir. Tipki Java Swing gibi standart bilesenlere sahiptir ve bu bilensenleri kullanirkende kendi API'sinden faydalanmaktadir. Java icin bircok web ara yuz uygulama catisi bulunmasina karsin Java Server Faces Java API olmasi ile one cikmaktadir. Jsf'le tasarim yaparken, java bean bilesenlerini kullanarak web arayuzu tasarlamamizda islerimizi kolaylastiracaktir.
Dilerseniz JSF hakkinda kisa bir ozet gectikten sonra JSF kullanarak Veritabanimizdan verilerimizi nasil cekip listeleyebilecegimizi asama asama gerceklestirelim.
Kullanacagim arayuz NetBeans IDE platformu olacaktir. Server olarak da GlassFish veya Tomcat kullanabilirsiniz... Uygulama icin GlassFish Server'i kullaniyorum. Yapacagimiz ornekte oncelikle veri tabanimizla uyumlu bir pojo sinifi olusturuyoruz. Icerisindeki degiskenlerin ve tiplerin veri tabani ile uyumlu olmasi calismamiz esnasinda bize kolaylik yaratacaktir. Hemen ardindan, veritabani ile ilgili baglantilarin bulundugu ve bu baglantida verileri cekebilmemiz icin bize bir nevi kopru gorevini gerceklestirecek olan pojo'da ki getter/setter metodlarimizi kullaniyoruz. .Xhtml sayfamizin jsf ile tasarim kismina gelmeden once de faces-config.xml' i kullanarak sayfalari ne sekilde kullanacagimizi bildiriyoruz. Bunlarla ilgili tanimlamalari ve onemli noktalari bir onceki makale de bulabilirsiniz.
Islemleri sirasiyla gerceklestirmeye baslarsak eger ;
Veri Tabani Sablonu Icin Komutlar ;
create table YAZARLAR (
YAZARID INT GENERATED BY DEFAULT AS IDENTITY,
YAZARADI VARCHAR (20) NOT NULL,
YAZARSOYADI VARCHAR (30) NOT NULL,
PRIMARY KEY (YAZARID)
);
insert into YAZARLAR (YAZARADI,YAZARSOYADI) values ('Harvey','Deitel');
insert into YAZARLAR (YAZARADI,YAZARSOYADI) values ('Paul','Deitel');
insert into YAZARLAR (YAZARADI,YAZARSOYADI) values ('Tem','Nieto');
insert into YAZARLAR (YAZARADI,YAZARSOYADI) values ('Sean','Santry');
NetBeans'de Java Server Faces ile ilgili Web Application olustururken dikkat etmemiz gereken nokta ise 4. adimda gorulen asagida ki gibi projeyi olustururken Framework secmemiz gerekmektedir. Bu da; Java Server Faces ile ilgili tick isaretini aktif hale getirerek gerceklestiriyoruz.
Projemizide olusturduktan sonra artik java Server Faces ile ilgili konfigurasyon dosyasini ekleyebilmemiz icin Web Pages uzerinde sag click -> New -> Other -> JavaServer Faces -> JSF Faces Configuration lokasyonunu kullanarak faces-config.xml 'i olusturuyoruz.
Yazarlar.Java Kaynak Kodlari ;
public class Yazarlar {
private int YazarId;
private String YazarAdi;
private String YazarSoyadi;
public Yazarlar() { }
public String getYazarAdi() {
return YazarAdi; }
public void setYazarAdi(String YazarAdi) {
this.YazarAdi = YazarAdi; }
public int getYazarId() {
return YazarId; }
public void setYazarId(int YazarId) {
this.YazarId = YazarId; }
public String getYazarSoyadi() {
return YazarSoyadi; }
public void setYazarSoyadi(String YazarSoyadi) {
this.YazarSoyadi = YazarSoyadi; }
}
Pojo'larla ilgili Java class'imizi olusturduktan sonra sira geldi veri tabani ile iletisime gececek ve verileri sayfaya ulastirmaya yarayacak kodlarin olusturulacagi java class'a... Yeni bir Java Class olusturuyorum ve ismini YazarlarListBean.java ismini veriyorum.
YazarlarListBean.Java Kaynak Kodlari ;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class YazarlarListBean {
private List<Yazarlar> yazarlar = new ArrayList<Yazarlar>();
private static String URL = "jdbc:derby://localhost:1527/odev";
private static String USERNAME = "odev";
private static String PASSWORD = "odev";
public YazarlarListBean()
{
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection connection = DriverManager.getConnection(URL, USERNAME,PASSWORD);
PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM YAZARLAR");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Yazarlar yazar = new Yazarlar();
yazar.setYazarId(rs.getInt("yazarid"));
yazar.setYazarAdi(rs.getString("yazaradi"));
yazar.setYazarSoyadi(rs.getString("yazarsoyadi"));
yazarlar.add(yazar);
}
rs.close();
pstmt.close();
connection.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Yazarlar> getYazarlar() {
return yazarlar; }
public void setYazarlar(List<Yazarlar> yazarlar) {
this.yazarlar = yazarlar; }
}
Peki bu komutlarla neler yapmak istedik bunlari bir inceleyelim;
Veri tabani ile baglantilarimizi olusturduktan sonra verilerimi alip saklayabilecegimiz ve ayni zamanda bunlari jsf sayfasina yonlendirebilmemiz icin bunlari bir generic list icerisinde saklama ihtiyacini duyuyorum. Bunu Yazarlar sinifi tipinde olusturuyorum. Baglanti ayarlari gerceklestirdikten sonra Select sql cumlecigi ile next komutu ile aldigim sirayla tum verileri Yazarlar sinifi icin olusturdugum nesneye set islemini gerceklestiriyorum. Burada dikkat edilmesi gereken bir onemli nokta daha olusturdugumuz generic list in getter/setter metodlarini kullaniyor olmamiz. Bunu sebebi ise yine tahmin ettiginiz gibi jsp sayfasinda verilerimizi cagirirken veye verilerimi veri tabanimiza gonderirken kulllaniyor olmamiz.
Sira geldi Jsp sayfamizin tasarimina ama bundan once ki unutmamamiz gereken onemli adimi gerceklestirmemiz gerekiyor. Tabiki de <managed-bean> ve <navigation-rule> taglari icin olusturdugumuz faces-config.xml dosyasina bean'lerimizin jsf le iletisimi saglamasi gereken eklenti kodlara... Simdilik sadece listeleme yapacagimiz icin managed-bean i tanitmamiz yeterli olacaktir. Uygulamayi gelistirdikce bu dosya icerisine diger bilgileri de ekleyecegiz.
Faces-Config.XML Kaynak Kodlari ;
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<managed-bean>
<managed-bean-name>yazarlarListBean</managed-bean-name>
<managed-bean-class>YazarlarListBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
Index.Xhtml Kaynak Kodlari ;
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head> <title>Facelet Title</title> </h:head> <h:body> <h:dataTable value="#{
yazarlarListBean.yazarlar
}" var="
yazar
"> <f:facet name="header">Yazarlar</f:facet> <h:column> <f:facet name="header">Id</f:facet> #{
yazar.yazarId
} </h:column> <h:column> <f:facet name="header">Ad</f:facet> #{
yazar.yazarAdi
} </h:column> <h:column> <f:facet name="header">Soyad</f:facet> #{
yazar.yazarSoyadi
}
</h:column>
</h:dataTable>
</h:body>
</html>
Jsf'in kendi bilesenlerinin bulundugu taglarda belirlemis oldugumuz bean sinifi ve icerisinde ki olusturdugumuz yazarlar isimli generic list'i cagirarak verilerimizi listelemis bulunmaktayiz. Ve artik uygulamamiz hazir bulunmaktadir...
Ekran Goruntusu ;
Bir sonraki makalemizde Bean yardimi ile Jsp sayfalarindan veri eklemeyi inceleyecegiz. Keyifli Calismalar Dilerim...
Comments