10 Eylül 2013 Salı

JSF de h:selectOneMenu ve h:selectManyListbox Bileşenlerinin Kullanımı

Bu iki component JSF uygulamalarında sıkça kullanılan componentler olmakla  beraber ManagedBean tarafında da işlenmesi oldukça önemlidir.
<h:selectOneMenu> componenti tıpkı combobox gibidir. <h:selectManyListbox> componenti ise tıpkı Java swing de ki list componenti gibidir.
Aşağıda bu bileşenlerin JSF sayfalarında nasıl kullanıldığı ve ManagedBean ler ile nasıl işlendiğini anlatan bir uygulama mevcuttur.

<h:outputText value="Meslek : " />
                    <h:selectOneMenu value="#{comyon.meslek}">
                        <f:selectItem itemValue="Öğrenci" itemLabel="Öğrenci" />
                        <f:selectItem itemValue="Mühendis" itemLabel="Mühendis" />
                        <f:selectItem itemValue="Doktor" itemLabel="Doktor" />
                        <f:selectItem itemValue="Avukat" itemLabel="Avukat" />
                        <f:selectItem itemValue="Asker" itemLabel="Asker" />
                    </h:selectOneMenu>

                    <h:outputText value="İlgi alanlarınız : " />
                    <h:selectManyListbox value="#{comyon.ilgiAlanlari}">
                        <f:selectItem itemValue="Yazılım" itemLabel="Yazılım"/>
                        <f:selectItem itemValue="Spor" itemLabel="Spor"/>
                        <f:selectItem itemValue="Kitaplar" itemLabel="Kitaplar"/>
                        <f:selectItem itemValue="TV" itemLabel="TV"/>
                        <f:selectItem itemValue="Tarih" itemLabel="Tarih"/>
                        <f:selectItem itemValue="Sosyoloji" itemLabel="Sosyoloji"/>
                        <f:selectItem itemValue="Matematik" itemLabel="Matematik"/>
                    </h:selectManyListbox>
Bu iki bileşen yukarıda görüldüğü gibi kullanılır. Ortaya aşağıda ki gibi bir görüntü çıkar.

Başka bir sayfaya buradan seçtiğimiz değerleri göndermek için ya da seçilen bu değerleri kontrol edebilmek için ManagedBean imiz aşağıda ki gibi olur.
package com.mesutemre;

import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "comyon")
@RequestScoped
public class ComponentYonetim {
    private String meslek;
    private String[] ilgiAlanlari;
    public String getMeslek() {
        return meslek;
    }

    public void setMeslek(String meslek) {
        this.meslek = meslek;
    }

    public String[] getIlgiAlanlari() {
        return ilgiAlanlari;
    }

    public void setIlgiAlanlari(String[] ilgiAlanlari) {
        this.ilgiAlanlari = ilgiAlanlari;
    }

    public String getılgiAlaniInString() {
        String s = "";
        StringBuilder builder = new StringBuilder();
        if (ilgiAlanlari == null) {
            s += "";
        } else {
            for (int i = 0; i < ilgiAlanlari.length; i++) {
                if (i != 0) {
                    builder.append(",");
                }
                builder.append(ilgiAlanlari[i]);
            }

            s += builder.toString();
        }
        return s;
    }
}

Listbox dan veri alınırken dönen değerin bir String dizisi olduğuna dikkat ediniz. Dolayısıyla xhtml sayfasında ListBox dan dönen değeri yazdırırken getılgiAlaniInString metodunu kullanacağız
Bir başka makale de görüşmek üzere esen kalın…

10 Şubat 2013 Pazar

JSTL SQL TAG İLE JSP SAYFALARINDA VERİTABANI İŞLEMLERİ


Öncelikle  şunu belirtelim ki JSTL SQL taglari kullanarak yapacağımız veritabanı işlemlerini Javabeanler ile ya da Servlet tarafında yapabiliriz. Fakat JSTL taglari her anlamda işimizi kolaylaştırır. Özellikle de JSTL Core tags. Önümüz deki yazılarımızda bu JSTL taglarinden bahsetmeye devam edeceğiz. JSTL (Java Standart Tag Library) nin kısaltmasıdır.
Şimdi gelelim JSTL sql taglarini kullanarak veritabanı işlemlerine. Veritabanında aslında güncelleme ve sorgulama dışında başka bir sorgu tipi yoktur. Ekleme ,silme ve güncelleme (INSERT,DELETE ve UPDATE) veritabanında güncelleme sorgu grubuna girip Javada yapılırken executeUpdate() kullanılır. Veritabanında var olan verileri çekmek için ise executeQuery() metodunu kullanıyorduk.
Şimdi bu 3 temel işlemi bir de JSP tarafında yapalım.
JSP sayfalarında bu JSTL taglarini kullanmak için JSTL 1.1 kütüphanesini eklememiz lazım. Daha sonra sql taglarini kullanabilmek için aşağıda ki kodu en başa yazmamız gerekir.
<%@taglib  uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
 Daha sonra her sql tag kullanacağımız sayfa da bulunması gereken kod parçası ise şudur ki bu kod ile MySql bağlantısı kurabilmek için gerekli olan bağlantı bilgilerini ihtiva eder.
<sql:setDataSource var="dataSource" driver="org.gjt.mm.mysql.Driver"
                   url="jdbc:mysql://localhost:3307"
                   user="root"
                   password="root"
                   scope="session" />
Şimdi kabul edelim ki elimizde  bir HTML formu var ve o HTML formunda da isimleri soyadi   ,adi ve tel olan 3 tane de veri bulunsun.

INSERT İŞLEMİ
<sql:update var="veri" dataSource="${dataSource}">
        INSERT INTO test.tel_rehberi (ad,soyad,no)
        VALUES (?,?,?)

        <sql:param value="${param.adi}" />
        <sql:param value="${param.soyadi}" />
        <sql:param value="${param.tel}" />

    </sql:update>

    <c:if test="${veri>=1}">
        <c:out value="${param.adi} ${param.soyadi} kaydedildi."></c:out>
        <a href="index.jsp">Kayit sayfasina donmek icin tiklayiniz...</a>
    </c:if>

DELETE İŞLEMİ
<sql:update var="veri" dataSource="${dataSource}">
        DELETE FROM test.tel_rehberi WHERE ad=? AND
        soyad=?
        <sql:param value="${param.adi}"/>
        <sql:param value="${param.soyadi}"/>       
    </sql:update>
       
    <c:if test="${veri>=1}">
        <c:out value="${param.adi} ${param.soyadi} silindi."></c:out>
        <a href="index.jsp">Kayit sayfasina donmek icin tiklayiniz...</a>
    </c:if>