JSTL DOKÜMANI. İçindekiler. Yazan: Elif Yavuz



Benzer belgeler
Üst Düzey Programlama

Üst Düzey Programlama

JSF Melih Sakarya. Java Server Faces Facelet

Öğr. Gör. Serkan AKSU 1

Üst Düzey Programlama

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Üst Düzey Programlama

Üst Düzey Programlama

Ç NDEK LER G R fi 1 Bafllamadan Önce 1 Kitab Kimler Okumal? 1 Kitap çerisindeki Örnekler 2 Örneklerin Kullan m 3 Çekinmeden Yaz n 7

PostgreSQL ve PL/pgSQL

Programlama Dillerinde Kullanılan Veri Tipleri

PROGRAMLAMA DERSİ 1. İNTERNET

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

4. Bağlantı (Köprü) Oluşturma

İNTERNET PROGRAMCILIĞI DERSİ

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

Üst Düzey Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bölüm 10: PHP ile Veritabanı Uygulamaları

Android Ders Notları

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

Java Programlama Giriş

1.PROGRAMLAMAYA GİRİŞ

HSancak Nesne Tabanlı Programlama I Ders Notları

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

PostgreSQL ve PL/pgSQL

Java Dersi. Altuğ Bilgin Altıntaş

JAVASCRIPT JAVASCRIPT DİLİ

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Programlama Yazılımı ile Web Sitesi Oluşturma

Tomcat Uygulama Sunucusunun Kurulumu. İlk olarak adresine gidiyoruz.

4 Front Page Sayfası Özellikleri

NESNEYE YÖNELİK PROGRAMLAMA

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

Göstericiler (Pointers)

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

ÖZGÜR YAZILIMLAR İLE J2EE

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

C# nedir,.net Framework nedir?

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Java EE 5 Teknolojileri Jboss Seam

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Yrd. Doç. Dr. Caner ÖZCAN

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Üst Düzey Programlama

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

1 PROGRAMLAMAYA GİRİŞ

Aktarımı Çalıştırmak/Geri Almak 146 Alan Seçenekleri 148 Veri Tabanı Şeması 150 Veri Tabanı ile İlgili Bazı Rake Görevleri 162 Modeller 164

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

BİL-142 Bilgisayar Programlama II

XSS Exploitation via CHEF

U y g u l a m a A i l e s i (Abakus 360, T-Panel, T-CRM) Tarayıcı Ayarları. IPera İletişim Teknolojileri

08217 Internet Programcılığı I Internet Programming I

Java Programlamaya Giriş

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

1. PL/SQL de kontrol yapıları

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

MongoDB. Doğan Aydın. Eylül, 2011

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Nesne Yönelimli Programlama

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

PHP 1. Hafta 2.Sunum

Microsoft Office Access Ders İçeriği 25 Saat. Access Temel 10 saat

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Linux Kurulumu (Sürüm 1.52) İçindekiler

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

MOBİLTEG MİKRO DEPO OTOMASYONU

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Bölüm 9. Altprogramlar ISBN

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

SÜRE BİLİŞİM TEKNOLOJİLERİ ÜNİTE 1: BİLİŞİM SİSTEMLERİ DERS SAATİ: 6

Microsoft SQL Server Sorgulama

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

Transkript:

JSTL DOKÜMANI İçindekiler 1. JSTL e Genel Bakış 1.1. JSP scriptlet etiketleri kullanmada ne sorunlar var? 1.2. JSTL in faydaları neler? 1.3. JSTL in olumsuz yanları neler? 2. JSTL Kullanma 2.1. JSTL Kullanım Kalıpları 2.2. Örnek : JSTL scriptletleri temizliyor 3. JSTL Kurma 4. Örnek: Merhaba Dünya! 5. Başvurulan Kaynaklar Yazan: Elif Yavuz 1

JSTL (Java Sunucu Sayfaları Standart Etiket Kütüphanesi) JSTL e Genel Bakış JSTL (java sunucu sayfaları standart etiket kütüphanesi), Sun şirketinin JSP üzerine kurduğu bir etiket kütüphanesidir. JSP'nin dil olarak ve özellikle bilgi işlem uygulamaları için yetersiz kaldığı fark edilince, JSTL dili piyasaya çıktı. Zaten, ATG gibi güçlü Uygulama Servis programları, standart dışında kalmış olmalarına rağmen kendi etiket kütüphanelerini uzun süredir kullanıyorlardı. Bunda JSP'nin çok temel oluşu, ATG örneğinde ise, daha revaçta bile olmayışı da büyük bir rol oynamıştır. JSTL etiketleri(tags) aşağıda belirtilen 4 kütüphanede düzenlenmiştir : Tanım Önek Varsayılan URI Core c http://java.sun.com/jstl/core XML İşleme x http://java.sun.com/jstl/xml I18N & Biçimlendirme fmt http://java.sun.com/jstl/fmt Veri tabanı erişimi sql http://java.sun.com/jstl/sql core: Temel fonksiyonlar: döngüler, koşul deyimleri, girdi/çıktı; xml: XML işleme ; fmt: para birimi ve tarihler gibi bazı verileri uluslarasılaştırma ve biçimlendirme; sql: Veritabanı erişimi 2

JSP scriptlet etiketleri kullanmada ne sorun var? JSP şu anda JAVA da devingen web sayfaları yapma konusunda standart teknoloji haline gelmiştir. Fakat bazı zayıflıkları vardır: Java kodu içine gömülmüş scriptlet etiketler çirkin ve rahatsız edici bir görünüme sahiptir. Java geliştiricisi olmayan bir kişi gömülü Java kodunu değiştiremez. Bu da JSP nin esas yararı olan, geliştiricileri ve işteki insanları sayfa içeriğini günleme konusunda yetkilendirme özelliği ortadan kalkmış oluyor. JSP scriptletleri içeren Java kodu diğer JSP sayfaları tarafından kullanılamaz, bu da yaygın program parçalarının bir çok sayfada yeniden yazılmasına neden olur. JSTL in faydaları nelerdir? JSTL etiketleri XMLdir, bu etiketler HTML sayfalarının etiketleri içine temiz ve biçimli bir şekilde harmanlanmıştır. JSTL in 4 tane olan etiket kütüphanesi JSP sayfalarında gereken çoğu işlevselliği sağlamaktadır. JSTL etiketleri Java programlama hakkında bilgisi olmayan kişilerce de kolaylıkla anlaşılabilirdir. JSTL etiketleri yeniden kullanılabilirlik mantığını da içermektedir :tarih ve sayılar gibi verileri biçimlendirerek. JSTL etiketleri istek(request) ve oturumda(session),nesnelerin türünü bilmeksizin ve çevirmeye gerek duymaksızın, nesneler, referans gösterebilirler. JSP nin ifade dili (Expression Language) getter ve setter yöntemlerinin Java nesneleri üzerinden çağrılmasını kolaylaştırır. Bu imkan JSP 1.2 de yok, fakat JSP 2.0 la birikte mevcuttur. Geniş ölçüde JSTL de kullanılıyor. 3

JSTL in olumsuz yanları nelerdir? JSTL in çeşitli dezavantajları bulunmaktadır: JSTL sunucuya işleme ek yükü getirebilir. Hem Java scriptlet kodları hem de etiket kütüphaneleri sonuç servlet olarak derlenir. Daha sonra bunlar servlet kabı(container) tarafından çalıştırılır. Scriptlet etiketleri içine gömülmüş Java kodları sonuç servlete kopyalanır. Diğer yandan JSTL etiketleri, servlete daha fazla kod eklenmesine neden olur. Çoğu durumda bu ölçülemez, fakat dikkate alınmalıdır. Scriptletler JSTL etiketlerine göre daha güçlüdür. Eğer her şeyi JSP sayfalarında yapmak istiyorsanız, gömülmüş Java kodlarıyla uğraşmak zorundasınızdır. JSTL, güçlü bir yeniden kullanılabilir kütüphane seti sağlamasına rağmen, Java kodunun yapabileceği her şeyi yapamaz. JSTL sunum kodunu kolaylaştırmak için, Model/Şekil/Kontrol uygulamalarının şekil katmanı için tasarlanmıştır. Model/Şekil/Kontrol mimarisi, 'model' olarak yazılmış işlem mantığının 'kontrol' kodları tarafından değiştirildiği ve sonucun 'şekil' üzerinde gösterecek şekilde kurulmuş sistemlere (mimariye) verilen addır. Günümüz Internet/Java mimarisinde model Java çekirdek(bean) /işlem mantığı kodları, şekil JSTL etiketleri (ve yardımcı görsel kütüphaneleri), kontrol da Servlet ya da görüntüsüz JSP kodları olarak tanımlanabilir. 4

JSTL Kullanma JSTL Etiketleri Alan İşlev Etiketler TLD Önek İfade dili desteği catch out remove set Core Akış denetimi choose when otherwise foreach fortokens if /jstl-c c URL Yönetimi import redirect url Core out parse set XML Akış denetimi choose when otherwise foreach if /jstl-x x Dönüşüm transform Yerelleştirme setlocale I18n Mesaj biçimlendirme Sayı ve Tarih Biçimlendirme bundle message setbundle formatnumber formatdate parsedate parsenumber settimezone timezone /jstl-fmt fmt setdatasource Database SQL query dateparam transaction update dateparam /jstl-sql Sql 5

JSTL daha önce de bahsedildiği gibi sayısı oldukça fazla olan etiketleri işlevsel alanlara bölüyor. Bu yüzden, JSTL de işlevsel alanları ve adlarını net bir şekilde göstermek için bir çok etiket kütüphanesi açıklayıcıları (tag library descriptor -TLD), bulunmaktadır. Yukarıdaki tablo mantıksal TLD isim ve önekleriyle, işlevsel alanları özetlemektedir. Bir JSTL kütüphanesini kullanabilmek için, gerçekleştiriminin kap(container) veya RI tarafından içerilmesine bakılmaksızın, bir kütüphaneyi taglib komutu tanımlanmalıdır: <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> Unutulmamalıdır ki varsayılan(default) URI kullanılıyor, JSP tanımı üzerine yazma imkanı sağlasa da. Bir kabın JSTL JSP sayfasına ilişkin sınıfın işlemleri için en iyi kodu oluşturmasına izin verilir. Bu da daha iyi bir performansa neden olur. Bu sadece varsayılan URI kullanıldığında olur, bununla birlikte kap en iyi uygulamayı kullanabilir. JSTL Kullanım Kalıpları JSTL, oturum veya istek seviyesinde Java nesnelerine erişerek, get..() işlemlerini çağırabilir, ve sonuçları döngü kullanarak tablo içinde, ya da bağlantı olarak tıklanabilir şekilde sayfada gösterebilir. 1..10 arası sayan bir döngü kurmak için, <c:foreach var="i" begin="1" end="10"> <c:out value="${i}"/> </c:foreach> Bu tabiri kullanmak, aşağıdaki şekilde kodlamaktan oldukça kolay!.. <% for (int i=0; i<10; i++) { %> <%=i%> <% } 6

%> JSP kodu üzerinde Java'nın nerede bitip nerede başladığı anlaşılmıyor. JSTL ile her şey etiket. Yani JSTL kodunun bakımı ve değiştirilmesi daha rahat olacak. Bağlantı göstermek için, c:url tabiri kullanılır. <a suraya="<c:url value="urun_detay_goster.jsp"> <c: name="urun" value="${urun.no}"/></c:url>"> <c:out value="${urun.isim}"/> </a> Eğer, List arayüzünü uzatmış olan bir Java nesnesinin 'elemanlarını' teker teker işlemek istiyorsanız, JSTL ile bu çok basit: <c:foreach var="i" items="${nesne.liste}"> <!-- ${i} ile istediğinizi yapın.. --> </c:foreach> Bu örnekte, nesne değişkeni üzerinde getliste() yönteminin tanımlandığı varsayılıyor. JSP standardi, get.. önek kısmının koyulmasına gerek bırakmadan, 'liste' dediğinizde 'getliste' yöntemini çağırıyor. 7

Örnek: JSTL scriptletleri temizliyor: JSP sayfalarının bakılabilirliğinin ve temizliğinin ispatı için aşağıdaki 2 basit JSP sayfasını inceleyelim. İlk JSP sayfası geleneksel scriptlet etiketleri, ikincisi ise JSTL etiketleri kullanmaktadır. Her iki sayfada da aynı işlem mantığı gerçekleşmektedir. AdresVO modeli nesnelerinin bir listesini request ten alıyorlar, liste üzerinde gezerek her modelin soyisim niteliğini boş (null) olmadığı sürece ekrana döker. Boşsa N/A yazar. Sonunda da o anki tarih bilgisi ekrana dökülür. JSP scriptlet etiketleri ile: <%@ page import="com.musteri.model.adresvo, java.util.*"%> <p><h1>müşteri İsimleri</h1></p> <% List adresler = (List)request.getAttribute("adresler"); Iterator adresiter = adresler.iterator(); while(adresleriter.hasnext()) { AdresVO adres = (AdresVO)adresIter.next(); if((null!= adres) && (null!= adres.getsoyisim()) && (adres.getsoyisim().length() > 0)) { %> <%=adres.getsoyisim()%><br/> <% } else { %> N/A<br/> <% } } %> <p><h5>son güncellenme Tarihi: <%=new Date()%></h5></p> 8

JSTL etiketleri ile: <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <p><h1>müşteri İsimleri</h1></p> <c:foreach items="${adresler}" var="adres"> <c:choose> <c:when test="${not empty adres.soyisim}" > <c:out value="${adres.soyisim}"/><br/> </c:when> <c:otherwise> N/A<br/> </c:otherwise> </c:choose> </c:foreach> <jsp:usebean id="now" class="java.util.date" /> <p><h5> Son güncellenme Tarihi: <c:out value="${now}"/></h5></p> JSTL Kurmak İçin Tomcat için JSTL kurmak istiyorsanız http://www.apache.org/dist/jakarta/taglibs/standard/ adresinden etiket kütüphanesini indirin. Kurduktan sonra, eğer Tomcat altında çalışıyorsanız, (sitenizin-ismi)/web-inf/web.xml altında, şunu tanımlayın. <web-app>.. <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/web-inf/tags/c.tld</taglib-location> </taglib>.. </web-app> 9

Şimdi, (sitenizin-ismi)/web-inf/tags/ adlı bir dizin altına, Jakarta'dan gelen tld dosyalarını kopyalayın. Bunu Ant'e otomatik olarak yaptırabilirsiniz. (sitenizin-ismi)/web-inf/lib/ altına, Jakarta'dan gelen jar dosyalarını kopyalayın. Bunu da Ant'e otomatik olarak yaptırabilirsiniz. Artık JSTL kullanmayı istediğiniz her sayfanın başında, şu ibareyi kullandıktan sonra, JSTL'iniz çalışıyor olacak. <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> Örnek : JSTL "Merhaba Dünya!" JSTL in kurulup kurulmadığını test etmek için Merhaba Dünya! yazan programı yazalım. Aşağıdaki kod kesimini bir kütüğe yazdıktan sonra merhabadünya.jsp ismiyle (ya da jsp uzantılı başka bir isimle) servlet kabının kökünün altında bir yere kaydedilmeli. <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> Bu değerle günlüyor: "Merhaba Dünya!" <c:set var="merhaba" value="merhaba Dünya!"/> <p/> <c:out value="${merhaba}"/> Eğer kurulum başarıyla gerçekleşmişse, sayfaya web tarayıcınızla eriştiğinizde aşağıdaki ibareler görülür: Bu değerle günlüyor: "Merhaba Dünya!" Merhaba Dünya! 10

JSP sayfasında ne oluyor? merhabadünya.jsp nin 1. satırında core etiket kütüphanesini alabilmek için,taglib komutu kullanıldı ve c: öneki taglibe atandı. c: JSP sayfası içinde core etiketlerinin kullanılacağını söylüyor. Bu örnekte c:set ve c:out olmak üzere 2 tane etiket kullanıldı. 4.satırda c:set etiketi Merhaba Dünya! değerini merhaba değişkenine atamak için kullanıldı. 6.satırda c:out etiketi merhaba değişkeninin değerini yazdırmak için kullanıldı. Başvurulan Kaynaklar : 1. http://www.onjava.com/pub/a/onjava/2002/08/14/jstl1.html 2. http://java.about.com/od/beginningjava/l/aa_jstl_intro.htm 3. http://java.sun.com/products/jsp/jstl/index.jsp 4. http://java.sun.com/j2ee/1.4/docs/tutorial/doc/jstl.html 5. http://www-106.ibm.com/developerworks/java/library/j-jsp05273.html 11