JSP

JSP – Directive Tags (Emir Etiketleri) – 4

Merhaba, bir önceki yazıda JSP yaşam döngüsünden bahsetmiştik. Bu yazıda ise emir etiketlerini göreceğiz.

Emir etiketleri, JSP sayfalarının tüm işleyişini kontrol eder ve uygulama sunucusuna işleyişle ilgili bilgiler verir. Emir etiketleri JSP sayfalarının herhangi bir yerinde bulunabilir fakat genellikle en üste yazılır ve <%@ .. %>  arasına kodlanır.

Syntax (Söz dizimi)

Emir etiketlerinin 3 çeşidi vardır. Bunlar:

  • Page
  • Include
  • Taglib

Page Etiketi

Etiketlerin attribute diye adlandırdığımız öznitelikleri vardır. Page etiketine bu öznitelikleri ekleyerek sayfa hakkında uygulama sunucusuna bilgi veririz. Fazla kafa karıştırmamak için bu özniteliklerden sadece önemli olanlarını inceleyeceğim. Bunlar:

  • contentType
  • errorPage
  • isErrorPage
  • import
  • language

 

1- contentType:

JSP sayfasının tipini belirler. text/html, text/xml gibi değerler alabilir. Varsayılan değeri text/html’dir.

Kullanım:

 

2- errorPage:

Eğer bir JSP sayfasında hata oluşması bekleniyorsa, hata oluştuğunda hangi sayfaya gidileceğini bu öznitelikle belirleyebiliriz. Tabii gidilecek sayfa isErrorPage özniteliği kullanılarak hata sayfası olarak tanımlanmalı. Bir sonraki başlıkta bu konuya değineceğiz.

Kullanım:

 

3- isErrorPage:

Üstteki başlıkta, hata oluştuğunda gidilecek sayfanın hata sayfası olarak belirlenmesi gerektiğini söylemiştik. Bu özniteliğimiz yazıldığı sayfayı hata sayfası olarak tanımlar ve başka bir JSP sayfasından hata oluştuğunda çağrılmasına izin verir.

Varsayılan değeri false’dir.

Kullanım:

 

4- import:

Çeşitli paketleri ve bu paketlerin altındaki java classlarını dahil etmek için kullanılır. Örneğin Date sınıfını kullanmak istiyorsak bu özniteliği kullanarak sayfaya “java.util.Date” i dahil etmeliyiz.

Kullanım:

 

5- language:

JSP sayfasının temelinde kullanılan programlama dilini ifade eder.

Varsayılan değeri java’dır.

Kullanım:

 

Include Etiketi

Include etiketi bir JSP sayfasının içeriğini olduğu gibi başka bir JSP sayfasına dahil eder. Bu işlemi file özniteliği ile yapar.

Kullanım:

 

Taglib Etiketi

Bu etiket, kullanıcının özel olarak oluşturulan etiketleri(custom tags) kullanmasını sağlar. JSTL (Java Standard Tag Library) de bu sistemle oluşturulduğundan JSTL’i kullanmak için sayfalarımızın başında taglib etiketini kullanmalıyız. JSTL’i ileride daha detaylı inceleyeceğiz.

Taglib etiketinin iki tane özniteliği vardır. Bunlar: uri ve prefix.

Prefix ön ek demektir. Kullanacağımız özel etiketlerin önüne koyarız.

Örnek: JSTL içindeki <c:out> etiketi. C burada ön ektir.

Uri özniteliği ise kullanacağımız özel etiketlerin kaynağını belirtir.

Kullanım:

Not: JSTL kullanabilmeniz için ilgili jar dosyasını projenizin WebContent\WEB-INF\lib dizinine atmanız gerekmektedir.
Gerekli Jar dosyasını şu linkten indirebilirsiniz : JSTL 1.2

Evet, Directive Tags(Emir etiketleri) konusunu tamamlamış olduk. Şimdi öğrendiklerimizle bir uygulama yapalım. Hazır mıyız?

index.jsp

  • JSP sayfamızla ilgili ayarları yaptık. language=”java” ve contentType=”text/html” dedik.
  • 2.satırda JSTL’nin özel etiketlerini kullanmak için taglib emir etiketini kullandık.
  • 13.satırda <%@ include > etiketi ile tarihYazdir.jsp dosyasını çağırdık. tarihYazdir.jsp dosyasında java kodları ile tarih ve saat bilgisi alınıp ekrana yazdırılıyor. Dikkat ederseniz kodlar tarihYazdir.jsp’de fakat çalıştığı yer index.jsp. Çünkü biz o kodları dahil(include) ettik.
  • 14.satırda butona basıldığında bolmeYap.jsp‘ye gidecek bir form oluşturduk.

 

tarihYazdir.jsp

  • İlk iki satırda sayfa içerisinde tarihlerle ilgili işlem yapacağımız için gerekli paketleri import ettik.
  • JSP etiketleri arasında java kodu kullanarak tarih ve saati alıp ekrana yazdırdık.

 

bolmeYap.jsp

  • Page emir etiketinin içerisinde errorPage belirledik. Yani bu sayfada bir hata olursa hataSayfasi.jsp’ye git dedik.
  • Body içerisinde formdan gelen verileri aldık ve bölme işlemini yapıp ekrana yazdırdık.(request objesini ve fonksiyonlarını daha sonra detaylı inceleyeceğiz. getParameter() fonksiyonu formdan gelen verileri almak için kullanılır. Bunu bilmeniz şimdilik yeterli.)

 

hataSayfasi.jsp

  • Page emir etiketinin içerisinde isErrorPage özniteliğine true değeri verdik. bolmeYap.jsp’de hata olduğunda buraya yönlendirilmesini söylemiştik ama bu sayfanın hata sayfası olduğunu doğrulamadık. isErrorPage özniteliğiyle bunu sağladık.
  • <%=exception%> kod parçası ile oluşan hatayı ekrana yazdırdık.

 

Özetleyecek olursak, index.jsp’de öncelikle tarihYazdir.jsp isimli sayfa dahil edilmiş. Ardından iki adet sayı alan bir form var. Girilen iki sayı bolmeYap.jsp’ye gönderiliyor ve orada işlem yapılıp sonuç ekrana yazdırılıyor. Eğer bir hata meydana gelirse önceden belirlenmiş olan hataSayfasi.jsp’ye yönlendiriliyor.

 

Ekran Görüntüleri

1

2

Eğer ikinci sayıya “0” girersek, sıfıra bölme hatası oluşacağından bizi hata sayfasına yönlendirecek.

3

4

Bir sonraki yazıda JSP Action Tags’leri işleyeceğiz. Görüşmek üzere.

 

 

Sakarya Üniversitesi Bilgisayar Mühendisliği 3.sınıf öğrencisi ve Özgür Yazılım Topluluğu üyesi. Java ile yazılım geliştirmeyi sever. Java’yı sevdiği gibi kahveyi de sever. Yeni teknolojilere meraklıdır. Araştırmacıdır. Motosiklet en büyük tutkusudur.
  • Pingback: JSP – Action Tags – 5()

  • Volkan

    Maalesef olumsuz sonuç alıyorum. Öncelikle taglib için “Can not find the tag library….” uyarısı üzerine jar dosyasının eksik olabileceğini düşündüm, indirdim ve projeye dahil ettim uyarılar kalkmış oldu. Ancak projeyi server üzerinde koştuğumda
    “http://java.sun.com/jsp/jstl/core cannot be resolved”
    satırı ile başlayan ve TagLibrary ile devam eden bir dizi hata alıyorum. Sanırım uyguladığım çözüm başarısız oldu. Sorunu nasıl aşabileceğim konusunda yardımcı olursanız sevinirim.

    • Volkan

      Jar dosyasını Build Path üzerinden projeye eklemiştim olumsuz sonuç almıştım. Daha sonra WEB-INF içindeki lib dizinine atarak projeyi koştum ve çalıştı.

      • Merhaba,
        Şu sıralar biraz yoğun olduğum için yorumlarınızı farketmemişim öncelikle bunun için kusuruma bakmayın. Bulduğunuz çözüm doğru. Aslında bahsettiğiniz jar dosyasının lib içerisine atılması gerektiğini yazıda belirtmeliydim fakat gözümden kaçmış. Yazıyı buna uygun olarak tekrar düzenleyeceğim. İlginize teşekkürler.