JSP Direktifleri
JSP Direktifleri nelerdir?
- JSP direktifleri JSP konteynerine gönderilen mesajlardır. JSP sayfasının tamamı hakkında genel bilgi sağlarlar.
- JSP direktifleri, JSP'nin sunucu uygulaması koduna çevrilmesi için bir konteynere özel talimat vermek için kullanılır.
- JSP yaşam döngüsü aşamasında, JSP'nin çeviri aşaması olan servlet'e dönüştürülmesi gerekir.
- JSP işlemenin belirli yönlerinin nasıl ele alınacağı konusunda konteynere talimatlar verirler
- Yönergeler, anahtar/değer çiftleri olarak virgülle ayrılmış birçok özelliğe sahip olabilir.
- JSP'de yönerge şu şekilde açıklanmaktadır:
<%@ %>
etiketleri.
Direktifin Sözdizimi:
<%@ directive attribute="" %>
JSP'deki Yönerge Türleri
JSP'de üç tip yönerge vardır:
- Sayfa yönergesi
- Yönergeyi dahil et
- Taglib direktifi
Her biri aşağıda örneklerle ayrıntılı olarak açıklanmaktadır:
1) JSP Sayfa yönergesi
Sayfa yönergesinin sözdizimi:
<%@ page…%>
- JSP sayfasının tamamına uygulanan nitelikleri sağlar.
- Betik dili, hata sayfası ve arabelleğe alma gereksinimleri gibi sayfaya bağlı nitelikleri tanımlar.
- Geçerli JSP sayfasına ait bir kaba talimat sağlamak için kullanılır.
Sayfa yönergesiyle ilişkili niteliklerin listesi aşağıdadır:
- Dil
- Uzattı
- ithalat
- içerik türü
- bilgi
- Oturum
- isThreadSafe
- otomatik yıkama
- tampon
- HataSayfası
- sayfaKodlama
- hatalı sayfa
- isELigonored
Her bir özellik hakkında daha fazla ayrıntı
1) dil: Şunu tanımlar: Programlama dili (temel dil) sayfada kullanılıyor.
Dilin sözdizimi:
<%@ page language="value" %>
Burada değer programlama dilidir (temel dil)
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Kodun açıklaması: Yukarıdaki örnekte nitelik dili değeri şöyledir: Java bu durumda temel dil budur. Bu nedenle, ifade etiketlerindeki kod Java derleyicisi kullanılarak derlenecektir.
2) Uzatır: Bu özellik, JAVA'nın yaptığı gibi sınıfı genişletmek (devralmak) için kullanılır
Extend'in sözdizimi:
<%@ page extends="value" %>
Burada değer, miras alınması gereken sınıfı temsil eder.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Kodun açıklaması: Yukarıdaki kodda JSP, demotest paketindeki DemoClass'ı genişletiyor ve tüm sınıf özelliklerini genişletecek.
3) İthalat: Bu nitelik, sayfa yönergesi niteliklerinde en çok kullanılan niteliktir. Sunucu uygulaması kodu üretirken konteynere diğer Java sınıflarını, arayüzlerini, numaralandırmalarını vb. içe aktarmasını söylemek için kullanılır. Java sınıfları, arayüzlerdeki import ifadelerine benzer.
İçe aktarma sözdizimi:
<%@ page import="value" %>
Burada değer, içe aktarılması gereken sınıfları belirtir.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Kodun açıklaması:
Yukarıdaki kodda, java.util paketinden Date sınıfını (tüm yardımcı sınıflar) içe aktarıyoruz ve aşağıdaki sınıfın tüm metotlarını kullanabiliyor.
4) içerik türü:
- Karakter kodlama şemasını tanımlar; yani içerik türünü ve yanıtın karakter setini ayarlamak için kullanılır.
- contentType'ın varsayılan türü şudur:
"text/html; charset=ISO-8859-1"
.
contentType'ın sözdizimi:
<%@ page contentType="value" %>
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Kodun açıklaması:
Yukarıdaki kodda içerik türü text/html olarak ayarlanmıştır, JSP ve oluşturulan yanıt sayfası için karakter kodlamasını ayarlar.
5) bilgi
- getServletInfo() yöntemiyle erişilebilen bir dizeyi tanımlar.
- Bu özellik servlet açıklamasını ayarlamak için kullanılır.
Bilginin söz dizimi:
<%@ page info="value" %>
Burada değer servlet bilgisini temsil eder.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Kodun açıklaması:
Yukarıdaki kodda, “Guru Direktifi JSP” dizesi, getServletInfo() kullanılarak sunucu uygulaması arayüzü tarafından alınabilir.
6) Oturum
- JSP sayfası varsayılan olarak oturum oluşturur.
- Bazen JSP'de bir oturumun oluşturulmasına ihtiyacımız olmaz ve bu nedenle bu durumda bu niteliği false olarak ayarlayabiliriz. Oturum niteliğinin varsayılan değeri true'dur ve oturum oluşturulur. False olarak ayarlandığında, derleyiciye varsayılan olarak oturumu oluşturmamasını belirtebiliriz.
Oturumun sözdizimi:
<%@ page session="true/false"%>
Burada bu durumda oturum niteliği doğru veya yanlış olarak ayarlanabilir.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Kodun açıklaması:
Yukarıdaki örnekte oturum özelliği “yanlış” olarak ayarlanmıştır, dolayısıyla bu JSP'de herhangi bir oturum oluşturmak istemediğimizi belirtiyoruz.
7)ThreadSafe'dir:
- Oluşturulan servlet için iş parçacığı modelini tanımlar.
- Sayfada uygulanan iplik güvenliği seviyesini gösterir.
- Varsayılan değeri true'dur, bu nedenle eş zamanlı
- Bu özelliği, oluşturulan sunucu uygulamasında SingleThreadModel arayüzünü uygulamak için kullanabiliriz.
- Bunu false olarak ayarlarsak, SingleThreadModel'i uygular ve paylaşılan nesnelere erişebilir ve tutarsızlığa neden olabilir.
isThreadSafe'in sözdizimi:
<% @ page isThreadSafe="true/false" %>
Burada true veya false senkronizasyon varsa true olarak, false olarak ayarlanır.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Kodun açıklaması:
Yukarıdaki kodda isThreadSafe “true” olarak ayarlandığından senkronizasyon yapılacak ve birden fazla thread kullanılabilecektir.
8) Otomatik Yıkama:
Bu özellik, arabelleğe alınmış çıktının otomatik olarak temizlenip temizlenmeyeceğini belirtir ve bu özelliğin varsayılan değeri true'dur. Değer false olarak ayarlanırsa arabellek otomatik olarak temizlenmeyecektir ve doluysa bir istisna alırız. Arabellek none olduğunda false gayri meşrudur ve arabelleğe alma yoktur, bu nedenle otomatik olarak temizlenecektir.
autoFlush'un sözdizimi:
<% @ page autoFlush="true/false" %>
Burada doğru/yanlış, arabelleğe alma işleminin yapılıp yapılmayacağını temsil eder
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Kodun açıklaması:
Yukarıdaki kodda, otomatik temizleme false olarak ayarlanmıştır ve bu nedenle tamponlama yapılmayacaktır ve çıktı manuel olarak temizlenmiştir.
9) Buffer:
- Bu öznitelik kullanılarak çıktı yanıt nesnesi arabelleğe alınabilir.
- Bu özniteliği kullanarak yapılacak tamponlamanın boyutunu tanımlayabiliriz ve varsayılan boyut 8KB'tır.
- Servlet'in yanıt nesnesine yazmadan önce tamponu yazmasını yönlendirir.
Tamponun sözdizimi:
<%@ page buffer="value" %>
Burada değer, tanımlanması gereken tamponun boyutunu temsil eder. Eğer tampon yoksa, o zaman none olarak yazabiliriz ve herhangi bir değer belirtmezsek, varsayılan 8KB'dir.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Kodun açıklaması:
Yukarıdaki kodda, tampon boyutu 16KB olarak belirtilmiş olup, tamponun boyutu bu boyutta olacaktır
10) isErrorPage:
- Hata Sayfasına sahip JSP Sayfasının başka bir JSP sayfasında kontrol edileceğini belirtir.
- "isErrorPage" özniteliğiyle bildirilen herhangi bir JSP dosyası, hata sayfaları olan diğer JSP sayfalarından istisnalar alma yeteneğine sahiptir.
- İstisnalar yalnızca bu sayfalar için geçerlidir.
- Varsayılan değer false'tur.
isErrorPage'in sözdizimi:
<%@ page isErrorPage="true/false"%>
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Kodun açıklaması:
Yukarıdaki kodda isErrorPage true olarak ayarlanmıştır. Bu nedenle, diğer JSP'lerin errorPage (bir sonraki öznitelikte açıklanmıştır) öznitelik kümesine sahip olup olmadığını kontrol edecek ve istisnaları işleyebilecektir.
11) Sayfa Kodlaması:
“pageEncoding” niteliği JSP sayfası için karakter kodlamasını tanımlar. Başka bir şey belirtilmezse varsayılan “ISO-8859-1” olarak belirtilir.
pageEncoding'in sözdizimi:
<%@ page pageEncoding="vaue" %>
Burada değer JSP için karakter kümesi değerini belirtir
Örnek:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Kodun açıklaması:
Yukarıdaki kodda “pageEncoding” varsayılan karakter seti ISO-8859-1 olarak ayarlanmıştır.
12) hata Sayfası:
Bu öznitelik, JSP'nin bir istisna atması ve ardından istisna sayfasına yönlendirme yapması durumunda JSP sayfasının hata sayfasını ayarlamak için kullanılır.
ErrorPage'in sözdizimi:
<%@ page errorPage="value" %>
Buradaki değer, hata JSP sayfa değerini temsil eder
Örnek:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Kodun açıklaması:
Yukarıdaki kodda, istisnaları ele almak için errroHandler.jsp'ye sahibiz.
13) dikkate alınmadı:
- IsELIgnored, EL etiketlerini göz ardı edip etmemeye karar vermemiz gereken bir flag özelliğidir.
- Veri türü Java enum'dur ve varsayılan değer false olduğundan EL varsayılan olarak etkindir.
isELIgnored'ın sözdizimi:
<%@ page isELIgnored="true/false" %>
Burada doğru/yanlış, EL'in göz ardı edilip edilmeyeceği değerini temsil eder.
Örnek:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Kodun açıklaması:
Yukarıdaki kodda isELIgnored doğrudur ve dolayısıyla İfade Dili (EL) burada göz ardı edilir. Aşağıdaki örnekte dört nitelik kullanıyoruz (kod satırı 1-2)
Dört özelliğe sahip örnek
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="false"%> <%@page import="java.util.Date" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Directive Guru JSP1</title> </head> <body> <a>Date is:</a> <%= new java.util.Date() %> </body> </html>
Kodun açıklaması:
Kod Satırı 1-2: Burada dört özelliği tanımladık;
- Dil: Olarak ayarlanmıştır Java programlama dili olarak
- contentType: derleyiciye html'nin format olması gerektiğini bildirmek için text/html olarak ayarlayın
- pageEncoding: varsayılan karakter kümesi bu öznitelikte ayarlanır
- isELIgnored: İfade Etiketi yanlış olduğundan dikkate alınmaz
Kod Satırı 3: Burada import özelliğini kullandık ve bu, “Tarih sınıfını” içe aktarıyor. Java util paketini kullanıyorum ve kodda güncel tarihi göstermeye çalışıyoruz.
Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alacaksınız
Çıktı:
- Tarih: Tarih sınıfının tarih yöntemini kullanan güncel tarih
2)JSP Include yönergesi
- JSP “include direktifi” ( kod satırı 8 ) bir dosyayı diğer dosyaya eklemek için kullanılır
- Dahil edilen bu dosya HTML, JSP, metin dosyaları vb. olabilir.
- Ayrıca kullanıcı görünümleriyle şablonlar oluşturmada ve sayfaları üstbilgi, altbilgi ve kenar çubuğu eylemlerine bölmede de kullanışlıdır.
- Çeviri aşamasında dosyayı içerir
İnclude yönergesinin sözdizimi:
<%@ include….%>
Örnek:
Direktif_jsp2.jsp (Ana dosya)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ include file="directive_header_jsp3.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP2</title> </head> <body> <a>This is the main file</a> </body> </html>
Direktif_header_jsp3.jsp (ana dosyaya dahildir)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <a>Header file : </a> <%int count =1; count++; out.println(count);%> : </body> </html>
Kodun açıklaması:
Direktif_jsp2.jsp:
Kod Satırı 3: Bu kodda, directive_header_jsp3.jsp dosyasını ana dosyaya (_jsp2.jsp) dahil ettiğimiz ve hem ana dosyanın hem de dahil edilen dosyanın çıktısını aldığımız include etiketlerini kullanıyoruz.
Direktif_header_jsp3.jsp:
Kod Satırı 11-12: Sayımı 1 olarak başlatan bir değişken aldık ve sonra onu artırdık. Bu, aşağıda gösterildiği gibi ana dosyadaki çıktıyı verecektir.
Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:
Çıktı:
- Çıktı Başlık dosyasıdır: 2: Bu ana dosyadır
- Çıktı, directive_jsp2.jsp dosyasından yürütülürken, directive_header_jsp3.jsp'nin içerdiği dosya ilk önce derlenecektir.
- Dahil edilen dosya tamamlandıktan sonra ana dosya çalıştırılır ve çıktı “Bu ana dosyadır” ana dosyasından alınır. Böylece çıktıyı _jsp2.jsp'den “Başlık dosyası: 3” ve _jsp2.jsp'den “Bu ana dosya” olarak alacaksınız.
3) JSP Taglib Yönergesi
- JSP taglib direktifi, içerisinde kullanabileceğimiz önek “taglib” olan etiket kütüphanesini tanımlamak için kullanılır. JSP.
- Daha fazla ayrıntı JSP Özel Etiketler bölümünde ele alınacaktır
- JSP taglib yönergesi, JSP standart etiket kitaplıklarını kullanan JSP sayfalarında kullanılır.
- Bir dizi özel etiket kullanır, kitaplığın konumunu tanımlar ve JSP sayfasındaki özel etiketleri tanımlamanın yollarını sağlar.
Taglib direktifinin sözdizimi:
<%@ taglib uri="uri" prefix="value"%>
Burada “uri” özelliği etiket kitaplığı tanımlayıcısındaki benzersiz bir tanımlayıcıdır ve “önek” özelliği bir etiket adıdır.
Örnek:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP</title> <gurutag:hello/> </head> <body> </body> </html>
Kodun açıklaması:
Kod Satırı 3: Burada “taglib”, uri ve önek nitelikleriyle tanımlanır.
Kod Satırı 9: “gurutag” tanımlanan özel etikettir ve her yerde kullanılabilir