JSP Direktifleri

⚡ Akıllı Özet

JSP yönergeleri, bir sayfanın tamamı hakkında genel bilgi sağlayan ve servlet koduna çevrilmesi sırasında ona talimat veren JSP konteynerine gönderilen mesajlardır. Üç yönerge türü vardır: page, include ve taglib; bunların her biri özel etiketler içinde yazılır.

  • 📢 Yönerge Tanımı: JSP konteynerine, sayfa genelinde geçerli çeviri talimatları veren bir mesaj.
  • 🧭 Üç Tip: Sayfa, dahil etme ve etiket kütüphanesi yönergelerinin tümü <%@ %> etiketlerinin içine yazılır.
  • 📄 Sayfa Yönergesi: Dil, içe aktarma, içerik türü, oturum, arabellek, hata sayfası ve diğer sayfa özelliklerini ayarlar.
  • 📎 Yönergeye Dahil Et: Çeviri sırasında başka bir dosyayı (HTML, JSP veya metin) sayfaya entegre eder.
  • ???? ️ Taglib Yönergesi: Özel etiketleri etkinleştirmek için bir URI ve önek içeren bir etiket kitaplığı tanımlar.

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:

  1. Sayfa yönergesi
  2. Yönergeyi dahil et
  3. 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:

  1. Dil
  2. Uzattı
  3. ithalat
  4. içerik türü
  5. bilgi
  6. Oturum
  7. isThreadSafe
  8. otomatik yıkama
  9. tampon
  10. HataSayfası
  11. sayfaKodlama
  12. hatalı sayfa
  13. isELigonored

Her bir özellik hakkında daha fazla ayrıntı

1) Dil: 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) Genişletir: Bu özellik, Java'da olduğu gibi sınıfı genişletmek (miras almak) 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) İçe Aktarma: Bu özellik, sayfa yönergesi özelliklerinde en çok kullanılan özelliktir. Servlet kodu oluşturulurken kapsayıcıya 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ındaki ve arayüzlerindeki 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) İç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, dize “Guru "Directive JSP" bilgisi, servlet arayüzü tarafından getServletInfo() fonksiyonu kullanılarak 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ı ediliyor. Aşağıdaki örnekte dört özellik 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ı:

Code 1-2 satır: 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

Code Çizgi 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

JSP Sayfa Yönergesi

Çıktı:

  • Tarih: Tarih sınıfının tarih yöntemini kullanan güncel tarih

2) JSP Dahil Etme yönergesi

  • JSP "include yönergesi" (kod satırı 8), bir dosyayı başka bir dosyaya dahil etmek için kullanılır.
  • Dahil edilen dosya HTML, JSP, metin dosyaları vb. olabilir.
  • Ayrıca, kullanıcı görünümleriyle şablonlar oluşturmak ve sayfaları başlık, altbilgi ve kenar çubuğu eylemlerine ayırmak için de faydalıdır.
  • Çeviri aşamasında dosyayı içerir

İnclude yönergesinin sözdizimi:

<%@ include….%>

Örnek:

Directive_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:

Code Çizgi 3: Bu kodda, `directive_header_jsp3.jsp` dosyasını ana dosyaya (`_jsp2.jsp`) dahil etmek için `include` etiketlerini kullanıyoruz ve hem ana dosyanın hem de dahil edilen dosyanın çıktısını alıyoruz.

Direktif_header_jsp3.jsp:

Code 11-12 satır: Bir değişkeni 1'e başlatıp artırdık. Bu, ana dosyada aşağıdaki gibi bir çıktı verecektir.

Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:

JSP Dahil etme yönergesi

Çı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ı:

Code Çizgi 3: Burada “taglib”, uri ve önek nitelikleriyle tanımlanır.

Code Çizgi 9: “gurutag” tanımlanan özel etikettir ve her yerde kullanılabilir

SSS

`include` yönergesi, çeviri sırasında bir dosyayı birleştirir, bu nedenle değişikliklerin yeniden derlenmesi gerekir. `jsp:include` eylemi ise, istek sırasında dosyanın yanıtını içerir ve bu da onu dinamik, sık değişen içerik için daha uygun hale getirir.

İçe aktarma özniteliği, kapsayıcıya hangi özelliğin kullanılacağını söyler. Java Servlet kodu oluşturulurken içe aktarılacak sınıflar, arayüzler veya paketler; normal bir koddaki import ifadelerine benzer. Java Bu sınıf, yöntemlerinin sayfada kullanılabilir olmasını sağlar.

JSP yönergeleri, JSP sayfası bir servlete dönüştürüldüğü sırada, yani çeviri aşamasında işlenir. Her istek sırasında çıktı üretmek yerine, servletin nasıl oluşturulacağını etkilerler.

Yapay zeka, düz dildeki bir açıklamadan doğru özniteliklere sahip uygun sayfa, include veya taglib yönergesini önerebilir, her özniteliği açıklayabilir ve yaygın hataları işaretleyebilir.ping Yeni başlayanlar JSP sayfalarını daha hızlı ve doğru şekilde yapılandırabilirler.

Evet. Yapay zeka, geçersiz öznitelik değerlerini, buffer none ile autoFlush false gibi çakışan ayarları, eksik hata sayfalarını ve yinelenen yönergeleri tespit etmek için JSP dosyalarını tarayabilir.ping Geliştiriciler, dağıtımdan önce yapılandırma sorunlarını tespit eder.

Bu yazıyı şu şekilde özetleyin: