Bu makalemde Oracle XE veri tabanına bağlanan basit bir JSF uygulaması yazacağım. Veri tabanına bağlanmak için Connection Pool tanımlayacağım. Projede kullandığım teknolojiler şunlar :
– Eclipse Indigo 3.7
– Apache Tomcat 7.0
– Oracle XE 11g
– JSF 2.0 (Mojarra 2.0.3)
– PrimeFaces 3.3
Öncelikle yeni bir web projesi oluşturarak JSF 2.0 kullanacağımı belirtiyorum.
Daha sonra web.xml dosyasının oluşturulacağını ve kullanacağım JSF implementasyonunu seçiyorum.
PrimeFaces ve Oracle driver kütüphanelerini WEB-INF – lib dizinine kopyalıyorum.
Bir önceki makalemde belirtmiş olduğum pool tanımlama adımlarını yapıyorum.
Veri tabanındaki Employee tablosuna karşılık bir Java Bean sınıfı yazıyorum.
[codesyntax lang=”java” lines=”no”]
package com.javauzmani.beans; public class Employee { private String firstName; private String lastName; private String email; private String phoneNumber; public Employee(String firstName, String lastName, String email, String phoneNumber) { this.firstName = firstName; this.lastName = lastName; this.email = email; this.phoneNumber = phoneNumber; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } }
[/codesyntax]
Sorgu çeken veri tabanı katmanındaki sınıfı yazıyorum. Bu sınıf içerisindeki metot bütün kayıtları getirecek.
[codesyntax lang=”java” lines=”no”]
package com.javauzmani.db; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import com.javauzmani.beans.Employee; public class EmployeeDb { public List<Employee> getAllEmployees() { List<Employee> employees = new ArrayList<Employee>(); Context envContext = null; Connection connection = null; PreparedStatement stmt = null; ResultSet rs = null; try { // Sunucuda tanımlanmış datasource'a eriştik envContext = (Context) new InitialContext().lookup("java:comp/env"); // datasouce üzerinden pool'a eriştik DataSource pool = (DataSource) envContext.lookup("jdbc/xe"); // havuzdan bir connection aldık connection = pool.getConnection(); // bağlantı üzerinden statement alıp sorgumuzu yazdık stmt = connection.prepareStatement("select first_name,last_name,email,phone_number from employees"); // sorguyu çalıştırıp dönen sonuçları resultset'te sakladık rs = stmt.executeQuery(); while (rs.next()) { Employee e = new Employee(rs.getString("first_name"), rs.getString("last_name"), rs.getString("email"), rs.getString("phone_number")); employees.add(e); } } catch (Exception e) { e.printStackTrace(); } finally { try { rs.close(); } catch (SQLException e) { } finally { try { stmt.close(); } catch (SQLException e) { } finally { try { connection.close(); } catch (SQLException e) { } } } } return employees; } }
[/codesyntax]
JSF sayfasından çağıracağım Managed Bean sınıfını tanımlıyorum.
[codesyntax lang=”java” lines=”no”]
package com.javauzmani.managedBeans; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import com.javauzmani.beans.Employee; import com.javauzmani.db.EmployeeDb; @ManagedBean @SessionScoped public class EmployeeBean implements Serializable { private static final long serialVersionUID = 5207408712086947185L; private List<Employee> employees = new ArrayList<Employee>(); public List<Employee> getEmployees() { return employees; } public void setEmployees(List<Employee> customers) { this.employees = customers; } public String getir() { employees = new EmployeeDb().getAllEmployees(); return "employees"; } }
[/codesyntax]
En son web sayfalarını tasarlıyorum.
[codesyntax lang=”html4strict” lines=”no”]
<?xml version="1.0" encoding="ISO-8859-9" ?> <!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:h="http://java.sun.com/jsf/html"> <h:head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> <title>Insert title here</title> </h:head> <body> <h:form> <h4>VERİ TABANINDAN KAYITLARI GETİRMEK İÇİN TIKLAYIN</h4> <h:commandButton value="GETİR" action="#{employeeBean.getir}" /> </h:form> </body> </html>
[/codesyntax]
[codesyntax lang=”html4strict” lines=”no”]
<?xml version="1.0" encoding="ISO-8859-9" ?> <!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:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core" > <h:head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" /> <title>Employee Listesi</title> </h:head> <body> <h:form> <p:dataTable value="#{employeeBean.employees}" var="e" bgcolor="silver" paginator="true" rows="10" > <p:column> <f:facet name="header">ADI</f:facet> #{e.firstName} </p:column> <p:column> <f:facet name="header">SOYADI</f:facet> #{e.lastName} </p:column> <p:column> <f:facet name="header">E-POSTA</f:facet> #{e.email} </p:column> <p:column> <f:facet name="header">TELEFON</f:facet> #{e.phoneNumber} </p:column> </p:dataTable> </h:form> </body> </html>
[/codesyntax]
Projemi çalıştırdığımda ekranlar aşağıdaki gibi oluyor.